Удаленное выполнение кода на EBay

    В мире информационной безопасности пока еще не всё так гладко, как хотелось бы. Примеров этому много, стоит посмотреть последние новости на тематических сайтах, как в голову приходит мысль о том, что, порой даже крупнейшие компании уделяют ИБ недостаточно внимания. В этот раз под прицел попал EBay.
    image

    Для тех, кто не знаком с EBay, советую перейти по ссылке, а мы продолжаем.
    13 декабря этого года David Vieira-Kurz, обнаружил на одном из поддоменов ебэя, удалённое выполнение кода, или попросту — RCE.
    Уязвимый участок кода находился на домене sea.ebay.com, в функционале поиска. Типичная ссылка для поиска выглядит примерно так: sea.ebay.com/search/?q=david&catidd=1. Но тут не все так просто, поскольку php использует динамическую типизацию, значит, возможно появление подводных камней. Первым делом Дэвид отправил вместо строки массив q[]. Но в ответ пришел нормальный результат, характерный для запроса типа строки. После чего ресерчер решил передать сразу несколько элементов массива q[], а в качестве, одного из элементов передать php код для вызова функции phpinfo. В результате строка запроса приобрела вид: sea.ebay.com/search/?q=1&catidd=1&q[0]=2&q[1]={${phpinfo()}}

    Отлично, результат получен.
    image
    Учитывая, что данная уязвимость является критичной, можно предположить, что будь на месте Дэвида «чёрный» хакер, веб сервер был бы у него в кармане, не исключен и доступ к базе данных основного домена.
    Поскольку Дэвид не преследовал корыстных целей, он сообщил об уязвимости тех. поддержке ебэя, которая в течении короткого времени ликвидировала данную дырку. Так как автор не смотрел исходный код скрипта, появилось предположение, что уязвимый участок кода выглядит примерно так:
    foreach($_GET['q'] as $data)
    {
        if ($data проходит по некоторым фильтрам) {
            eval("происходит выполнение $data");
        }
    }
    

    Кроме текста есть еще и видео с демонстрацией:


    Проверяйте свой код на наличие подобных участков, это может обезопасить вас в будущем.
    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 7

      +8
      Обычно eval = evil.
        +1
        достаточно четко контролировать входящие переменные. Если там не то, что ожидалось — нафиг такие данные
        0
        Очень повезло, что порядочный человек обнаружил уязвимость, а то страшно представить что могло произойти с ebay.
          0
          Воможно, ее заложил «не порядочный» разработчик, а Девид был не первый кто нашел. Вероятно, Девид был не первый, так вероятно использовал какой стандартный сканер уязвимостей.

          А может дыру сделали специально, что бы кто то спалил exploit
          +2
          Банальный eval? Как то скучно описано. Значительно чаще встречается ситуация с использованием eval флага внутри preg_replace, что в контексте обработки тестовой строки поискового запроса выглядит более правдоподобно, чем просто eval для входящих данных.
          • UFO just landed and posted this here
            0
            Судя по ядру, тот домен обслуживает RHEL 5.5 далеко не первой свежести

            Only users with full accounts can post comments. Log in, please.