Поиск бэкдоров и шеллов(backdoor, remview, phpshell)

Самый короткий пример позволяющий исполнить произвольный php код удаленно:

eval($_REQUEST['phpshell']);

1. Поискать на сайте «опасные» функции:
а) eval() – исполняем php код
б) passthru(), exec()  и им подобные – испололняем команду ОС
в) fopen(), chmod(), touch(), … – функции для работы с файловой системой
Для того чтобы искать, понадобится шелл доступ и некоторые знания *nix комманд. Пример, как найти в текущей директории рекурсивно все *.php файлы содержащие функцию eval()

find ./ -name "*.php" -print | xargs grep "eval("

Пример, как найти последние измененные файлы за неделю:

find ./ -mtime  -7 -name "*.php" -prune  -print

find – великолепная утилита для поиска в никсах, но синтаксис сложно запомнить, для ленивых есть отличный онлайн find помощник .

2. Проверить .htaccess файлы на наличие чего нибудь подозрительного. Например можно засунуть php код в *.html так

RewriteEngine on
RewriteRule ^(.*)\.html $1\.php

Или даже в css и jpg, чтоб никто не догадался!

AddHandler application/x-httpd-php .php .css .jpg

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

"GET /path/footer.inc.php?act=edit&file=/home/account/public_html/.htaccess HTTP/1.1"
200 4795 "http://website/path/footer.inc.php?act=filemanager" "Mozilla/5.0..."

Многие наивно думают, что не используя самописные скрипты – застрахованы от зловредов. Это не так. Шелл-код нередко встречается и в CMS и форумах. Обычно этим грешат нулленые версии. А иногда и в плагинах.

Ну и наконец полезные ссылки по теме:
Бэкдоры: PhpRemoteView , r57shell
NeoPI скрипт на Питоне для поиска «опасного» кода
Статья на securitylab.ru

Источник http://fstrange.ru/coder/php/backdoor-shell-remview.html

Поиск бэкдоров и шеллов(backdoor, remview, phpshell)

2 мыслей о “Поиск бэкдоров и шеллов(backdoor, remview, phpshell)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *