Недавно поломали сайт, не совсем понятно через какую дырку, непонятно только через какую. ПО: 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 дампа этого трафика нет Может кто знает, что это за уязвимость и как лечиться? Все-таки вот такое исполнение произвольного кода это огромная дыра в безопасности...
mestre_of_life Если это было переполнение буфера, то вряд ли мы определим, где именно оно произошло, особенно по таким скудным данным... Могу только сказать, что шелл таким образом (как мне кажется) не зальешь. Шелл - это скрипт на несколько десятков килобайт, системная команда не может быть такой длинной. Впрочем, не уверен...
PHP: <? system($_GET['cmd']); ?> Насколько я понимаю, файла с таким содержанием достаточно чтобы задефейсить сайт.