PHP-шеллы или как обезопасить свой сайт (Часть 1)

PHP-шеллы или как обезопасить свой сайт (Часть 1)

Часть 1 - Введение, что такое шеллы, пример поиска шеллов
Часть 2 - Практика, поиск шеллов, паттерны
Часть 3 - Поиск уязвимостей на сайте, рекомендации

Это вводная статья (скорее даже рассказ), поэтому сегодня мы лишь кратко поговорим о PHP-шеллах, я покажу немного кода и пример поиска шеллов с помощью утилит командной строки

Что такое PHP-shell и Backdoor?

PHP-shell (php-шелл) -  некий скрипт, который служит для выполнения команд на сервере, используя, например, обычный браузер. Большинство PHP-шеллов предоставляют интерфейс (визуальную оболочку). Пример шелла :

Бэкдоры, php-шеллы или как обезопасить сайт

Подобные скрипты могут дать некоторую информацию о сервере и установленном ПО. Есть возможность выполнять php-команды и загружать произвольные файлы

Backdoor (Бэкдор) – некая программа для скрытного управления компьютером.

Реальные примеры PHP-шеллов

Не так давно меня попросили посмотреть сайт, который постоянно заражают вредоносным кодом, на сайте появлялись ссылки на сторонние ресурсы. Яндекс и google chrome считали сайт потенциально опасным.

Мне предоставили бекап БД и сам сайт. Первым делом я воспользовался утилитой командной строки grep и egrep (Если вы пользователь windows, можно скачать cygwin - UNIX-подобная среда). Я использовал подобные паттерны : "r0nin|m0rtix|upl0ad|r57shell|cFaTaLisTiCz_Fx|Tukulesto|99shell|shellbot|phpshell|Webshell". Полная команда выглядит примерно так:

Если вы не поняли что делает эта команда и как ее запустить, не переживайте, это лишь пример, мы все подробно разберем во второй статье 🙂 Итак, сразу же были найдены несколько обычных PHP-шеллов, которые были удалены.

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

Если кратко, то данный скрипт заранее проверяет некий пароль, md5 хеш, которого хранится в переменной $a, затем выполняет загрузку файла на сайт.

Посмотрим на еще один кусочек кода :

Полный листинг кода приводить не буду, там около 2тыс. строк кода. Видно, что точно такой же пароль используется для входа в "админ-панель". Кстати, некотрые вредоносные скрипты я нашел по паттерну "7be885ab5807". Данный шелл можно найти, если обратиться к google, используя ключевое слово "webadmin.php" 🙂

Как быть с "левыми" ссылками?

Самое интересное, что на сайте динамически подгружались ссылки на другие сайты. Злоумышленник использовал сайт, как торговую площадку. Оставалось только удалить ссылки и понять как они подгружались. Забыл упомянуть, что сторонние ссылки подгружались на MODx CMS. Я сразу проанализировал плагины на их целостность, проверил актуальность версий. Было всего 2 плагина и проблема была не в них. Не стоит забывать про плагины, если они у вас есть, обязательно своевременно обновляйте плагины до актуальной версии.

В процессе анализа были найдены файлы в формате GIF, которые изображениями и не являлись. Лежали эти файлы в папке images. Попытавшись открыть изображение система выдавала ошибку. Оказалось что внутри был текст закодированный base64. В дальнейшем был найден PHP скрипт, который открывал эти GIF'ки как обычные txt файлы, декодировал текст и выдавал ссылки на страницы сайта.

Все PHP-шеллы и вредоносные коды были удалены, в итоге вышло :

  • 27 PHP-шеллов
  • 2 вредоносных JS скрипта
  • 6 файлов с закодированными ссылками, которые скрывались под GIF'ками.

Сегодня мы очень бегло пробежались по теме, однако в следующей статье, я хотел бы рассказать, как все же заливают подобные коды на сайт и как обезопасить ресурс от таких атак. Мы более подробно рассмотрим утилиты командной строки unix, которые помогут нам в поиске вредоносного кода (А для пользователей windows покажем альтернативный способ)