Видалення вредоносного коду з сайту 1С-Бітрікса
На сайті з'явилися редиректи на чужі домени, антивірус хостингу заблокував акаунт, або Google Search Console прислав повідомлення «Виявлено вредоносне ПО». Видалення вредоносного коду — це не пошук та видалення одного файлу. Сучасні атаки на Бітрікс-сайти багатошарові: основний бекдор, кілька резервних точок входу, завдання в cron та змінені записи в БД. Пропустите одне звено — через добу все повернеться.
Типи вредоносного коду в Бітріксі
1. PHP-бекдори (web shell). Повнофункціональний файловий менеджер та командна строка, доступні через HTTP. Звичайно замасковані під системні файли: settings.php, cache.php, session_handler.php. Розташовані у директоріях, куди адміністратори рідко заглядають: /bitrix/tmp/, /upload/resize_cache/, /bitrix/backup/.
2. Інджекції в існуючі файли. Вредоносний код внесений на початку або в кінці легітимних PHP-файлів. Улюблені цілі:
-
/bitrix/php_interface/init.php— виконується при кожному хіті -
/bitrix/templates/.default/header.phpтаfooter.php -
.htaccess— додаванняauto_prepend_fileабоphp_value -
index.phpв корені та розділах
3. Вредоносний код у БД. JavaScript-інджекції в HTML-контенті інфоблоків, у властивостях типу «HTML/текст», у шаблонах розсилок (b_sender_mailing), у користувацьких полях. Такий код не виявляється сканування файлової системи.
4. Обфускований код. Багатошарове кодування: eval(gzinflate(base64_decode(str_rot13(...)))). Мета — обійти антивірусу та grep-пошук. Можуть використовуватися неочевидні конструкції: змінні змінних ($$var), call_user_func(), динамічні імена функцій.
Методика повного сканування
Етап 1. Автоматичне сканування.
Почніть зі штатного сканера Бітрікса: Налаштування → Проактивна защита → Сканер безпеки. Виявляє базові паттерни та перевіряє цілісність ядра. Його недостатньо для повної очистки, але він дає відправну точку.
Додаткові інструменти:
- AI-Bolit (revisium.com) — спеціалізований сканер для CMS, знає паттерни, характерні для Бітрікса
- ClamAV — загальний антивірус, виявляє відомі web shell
- YARA-правила — для продвинутого сканування з кастомними сигнатурами
Етап 2. Ручний пошук за паттернами.
Автоматичні сканери пропускають добре обфускований код. Шукайте вручну:
grep -rn "eval(" --include="*.php" /path/to/site/
grep -rn "base64_decode" --include="*.php" /path/to/site/
grep -rn "assert(" --include="*.php" /path/to/site/
grep -rn "system(" --include="*.php" /path/to/site/
grep -rn "passthru(" --include="*.php" /path/to/site/
grep -rn "shell_exec(" --include="*.php" /path/to/site/
grep -rn "preg_replace.*\/e" --include="*.php" /path/to/site/
Кожне збіг перевіряйте вручну — багато з цих функцій використовуються легітимно в ядрі Бітрікса. Відмінність вредоносного коду: він працює з даними з $_REQUEST, $_POST, $_GET, $_COOKIE, $_SERVER['HTTP_*'] безпосередньо, без санітизації.
Етап 3. Пошук аномалій по часу модифікації.
find /path/to/site/bitrix/modules/ -name "*.php" -newer /path/to/site/bitrix/modules/main/classes/general/version.php
Файли ядра, змінені після останнього оновлення — підозрілі. Порівнюйте їх з чистим дистрибутивом через diff.
Етап 4. Перевірка .htaccess.
Шукайте всі .htaccess рекурсивно. Бітрікс створює їх у певних директоріях — кожен файл у нестандартному місці підозрілий. Типові вредоносні директиви:
-
RewriteRuleз редиректом на зовнішній домен за умовою User-Agent (Googlebot перенаправляється, звичайний користувач — ні) -
auto_prepend_file/auto_append_file— підключення вредоносного скрипту до всіх PHP-файлів -
php_value error_log /dev/null— приховування логування
Етап 5. Перевірка БД.
Шукайте JavaScript-інджекції в контенті:
SELECT ID, NAME FROM b_iblock_element WHERE DETAIL_TEXT LIKE '%<script%' AND DETAIL_TEXT LIKE '%eval%';
SELECT ID, NAME FROM b_iblock_element WHERE PREVIEW_TEXT LIKE '%<iframe%src=%';
Перевіряйте також: b_option (змінені налаштування модулів), b_agent (підозрілі агенти), b_event_handler (нові обробники подій, що підключають зовнішній код).
Видалення та верифікація
Після складання повного списку заражених об'єктів:
- Файлі-бекдори — видаляйте повністю.
- Інджекції в легітимні файли — відновлюйте з чистого бекапу або дистрибутива. Не редагуйте вручну — легко залишити хвіст.
- Заражені записи в БД — очищуйте через SQL, попередньо зробивши дамп.
- Змінені .htaccess — заміняйте стандартними з дистрибутива Бітрікса.
Верифікація: після очистки повторіть повне сканування. Потім перевірте, що сайт корректно працює — агресивна очистка може задіти легітимний код.
Запобігання повторному заразженню
- Оновіть ядро до останньої версії — більшість масових взломів еськплуатують відомі CVE, закриті в оновленнях
- Закрийте виконання PHP у
/upload/на рівні веб-сервера - Налаштуйте
open_basedirдля обмеження області видимості PHP-процесу - Заборониєте функції
exec,system,passthru,shell_exec,proc_openуphp.iniчерезdisable_functions - Включіть WAF модуля
bitrix.security— він блокує типові паттерни атак на рівні HTTP-запиту
Повний цикл очистки середнього сайту займає 3-5 робочих днів. Крупні проекти з десятками модулів та гігабайтами контенту — до двох тижнів.







