Bash: поиск подозрительного кода и PHP в upload (проверка Bitrix после взлома)
Команды grep и find для поиска типичных признаков вредоносного кода и недавно изменённых PHP-файлов в каталоге сайта 1С-Битрикс.
Как использовать
- Подставьте вместо /var/www/site путь к корню вашего сайта (DOCUMENT_ROOT).
- Запускайте с пользователя, имеющего право чтения файлов сайта (обычно www-data или владелец каталога).
- Результаты grep — файлы и номера строк; проверяйте их вручную — не весь вывод является вредоносным кодом.
Команды для ручной проверки сайта на 1С-Битрикс после инцидента или для профилактики: поиск типичных конструкций вредоносного кода и списка PHP-файлов в /upload, изменённых за последние дни. По каталогу /upload в Bitrix не должно быть исполняемого PHP — любые .php там повод для разбора.
Поиск подозрительных конструкций в коде
# Подозрительный base64 + eval (частая маскировка бэкдора)
grep -R --line-number "eval(base64_decode" /var/www/site
# Прямой вызов выполнения команд
grep -R --line-number -E "shell_exec|passthru|system\s*\(" /var/www/site
# Поиск eval в PHP-файлах внутри upload (в upload не должно быть PHP)
grep -Rl "eval(" /var/www/site/upload --include="*.php" 2>/dev/null
/var/www/site замените на фактический путь к корню сайта (например, $DOCUMENT_ROOT).
Поиск недавно изменённых PHP в /upload
Файлы, изменённые после предполагаемой даты взлома, стоит проверить в первую очередь.
# PHP-файлы в upload, изменённые за последние 7 дней
find /var/www/site/upload -name "*.php" -mtime -7 -ls
# Список с датой и размером (удобно для отчёта), за последние 30 дней
find /var/www/site/upload -name "*.php" -mtime -30 -exec ls -la {} \;
-mtime -7 — изменены за последние 7 дней; -30 — за 30 дней.
Краткий просмотр логов (для контекста)
Чтобы понять, к каким путям были запросы в момент инцидента:
tail -n 500 /var/log/nginx/access.log
tail -n 500 /var/log/nginx/error.log
Замечания
- Часть совпадений grep может быть в легитимном коде (например, обёртки над shell_exec). Каждый результат нужно просматривать вручную.
- В каталоге
/uploadпо рекомендациям Bitrix не должно быть PHP; если find находит там.php— их нужно проверить или удалить после анализа. - Пути к логам зависят от дистрибутива и настройки Nginx/Apache; при необходимости укажите свой путь к
access.logиerror.log.