За последние 24 часа нас посетили 16734 программиста и 1694 робота. Сейчас ищут 868 программистов ...

Что это за уязвимость? был remote code execution с php 5.2.5

Тема в разделе "Прочие вопросы по PHP", создана пользователем mestre_of_life, 5 авг 2008.

  1. mestre_of_life

    mestre_of_life Активный пользователь

    С нами с:
    9 ноя 2007
    Сообщения:
    2
    Симпатии:
    0
    Недавно поломали сайт, не совсем понятно через какую дырку, непонятно только через какую.

    ПО: PHP5.2.5 apache 2.2.8 / freebsd
    PHP с стандартными модулями, APC и bcompiler.
    Апач с mod_ssl, и сайт был доступен как по ssl, так и не по ssl.

    Итак, в логах апача вижу в строке где пишется GET запрос (вместе со словом GET):

    Сперва что подозрительно, в errorlog есть 10 таких строк (с разными PID-ами):

    [Mon Jul 21 10:37:54 2008] [notice] child pid 56942 exit signal Illegal instruction (4)

    Далее access-log.
    Формат логов привожу такой: <Request> <RespnseCode> <BytesSent> <Referer> <UserAgent>

    Access log: "<? system(\"echo 123 > 123.php\"); ?>" 400 226 "-" "-"
    Error log: [error] [client xx.xx.xx.xx] Invalid URI in request <? system("echo 123 > 123.php"); ?>

    Следующий запрос был через 3 секунды:

    Access log: "GET /index.php?gh HTTP/1.1" 200 137 "-" "Opera/9.50 (Windows NT 5.1; U; ru)"
    Error log: cannot create 123.php: Permission denied

    Тоесть этот код реально выполнялся, позже этим способом был залит web shell и далее все понятно.
    Предполагаю, перед этим апачу были скормлены запросы, которые сыграли на переполнении буфера и стало возможным делать такие запросы. К сожалению tcp дампа этого трафика нет :(

    Может кто знает, что это за уязвимость и как лечиться? Все-таки вот такое исполнение произвольного кода это огромная дыра в безопасности...
     
  2. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    mestre_of_life
    Если это было переполнение буфера, то вряд ли мы определим, где именно оно произошло, особенно по таким скудным данным...
    Могу только сказать, что шелл таким образом (как мне кажется) не зальешь. Шелл - это скрипт на несколько десятков килобайт, системная команда не может быть такой длинной. Впрочем, не уверен...
     
  3. mestre_of_life

    mestre_of_life Активный пользователь

    С нами с:
    9 ноя 2007
    Сообщения:
    2
    Симпатии:
    0
    шелл был залит по фтп с помощью мателького php кода. Тут всё просто ;)
     
  4. shreck

    shreck Активный пользователь

    С нами с:
    7 авг 2007
    Сообщения:
    479
    Симпатии:
    0
    Адрес:
    Россия, Саратов
    PHP:
    1.  
    2. <? system($_GET['cmd']); ?>
    3.  
    Насколько я понимаю, файла с таким содержанием достаточно чтобы задефейсить сайт.
     
  5. Anonymous

    Anonymous Guest

    заранее думать надо )