Как это выглядит:
- Сайт может открываться, но не работает каталог, блог, новости и различные разделы сайта.
- Не открывается админка сайта, пишет ошибку: Forbidden You don't have permission to access /bitrix/ on this server:

Вирус создает огромное количество своих файлов в папках сайта. И что самое важное, он создает и подменяет файлы .htaccess сайта. Именно они первично не дают работать разделам сайта и админке нормально.
Что делать
- Восстановить доступ к админке удалив из папок /bitrix/ и /bitrix/admin/ файлы .htaccess.
- В админке перейти в инструмент Прокативная защита - Поиск троянов - Проверка .htacess
- Удалить все файлы .htacess и восстановить основные (потом привести основной htaccess к нужному вам виду)
- Там же произвести сканирование на поиск вирусов через сканирование файлов.
- Проканализировать выдачу и удалить файлы с вирусом. Почистить файл index.php, обычно в его начало вставляется вредоносный код тоже.
- Закрыть уязвимости обновив Битрикс и АСПРО до последних версий. Или закрыть уязвимости АСПРО вручную, но Битрикс обновить нужно.
- Перезапустите сервер чтобы убить вредоносные процессы.
Как закрыть уязвимости в АСПРО
Взломы происходят через необновленный шаблон АСПРО. В идеале - установить обновление на АСПРО. Если нет такой возможности, то нужно внести правки в четыре уязвимых файла в шаблоне.1. Файлы:
/include/mainpage/comp_catalog_ajax.php/bitrix/wizards/aspro/max/site/public/ru/include/mainpage/comp_catalog_ajax.php
$arIncludeParams = ($bAjaxMode ? $_POST["AJAX_PARAMS"] : $arParamsTmp);
$arGlobalFilter = ($bAjaxMode ? unserialize(urldecode($_POST["GLOBAL_FILTER"])) : ($_GET['GLOBAL_FILTER'] ? unserialize(urldecode($_GET['GLOBAL_FILTER'])) : array()));
$arComponentParams = unserialize(urldecode($arIncludeParams));
Заменить на:
if ($_POST["AJAX_PARAMS"] && !is_array(unserialize(urldecode($_POST["AJAX_PARAMS"]), ["allowed_classes" => false]))) {
header('HTTP/1.1 403 Forbidden');
$APPLICATION->SetTitle('Error 403: Forbidden');
echo 'Error 403: Forbidden_1';
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php');
die();
}
$arIncludeParams = ($bAjaxMode ? $_POST["AJAX_PARAMS"] : $arParamsTmp);
$arGlobalFilter = ($bAjaxMode ? unserialize(urldecode($_POST["GLOBAL_FILTER"]), ["allowed_classes" => false]) : ($_GET['GLOBAL_FILTER'] ? unserialize(urldecode($_GET['GLOBAL_FILTER']), ["allowed_classes" => false]) : array()));
$arComponentParams = unserialize(urldecode($arIncludeParams), ["allowed_classes" => false]);
Этот вариант не ломает отображение табов на главной, в отличии от замены на json_decode.
2. Файлы:
/ajax/show_basket_fly.php/ajax/show_basket_popup.php
/ajax/reload_basket_fly.php
/bitrix/wizards/aspro/max/site/public/ru/ajax/reload_basket_fly.php
/bitrix/wizards/aspro/max/site/public/ru/ajax/show_basket_fly.php
/bitrix/wizards/aspro/max/site/public/ru/ajax/show_basket_popup.php
В этих файлах заменить
$arParams = unserialize(urldecode($_REQUEST["PARAMS"]));
на
if (!is_array(unserialize(urldecode($_REQUEST["PARAMS"]), ["allowed_classes" => false]))) {
header('HTTP/1.1 403 Forbidden');
$APPLICATION->SetTitle('Error 403: Forbidden');
echo 'Error 403: Forbidden';
require_once($_SERVER['DOCUMENT_ROOT'] . '/bitrix/modules/main/include/epilog_after.php');
die();
}
$arParams = unserialize(urldecode($_REQUEST["PARAMS"]), ["allowed_classes" => false]);
3. Файлы:
/bitrix/components/aspro/oneclickbuy.max/script.php (для аспро Максимум)/bitrix/components/aspro/oneclickbuy.lite/script.php (для аспро Лайтшоп)
В этих файлах заменить
$res = CSaleOrderProps::GetList(array(), array('@CODE' => unserialize($_POST["PROPERTIES"]), 'PERSON_TYPE_ID' =>$personType));
на
$res = CSaleOrderProps::GetList(array(), array('@CODE' => unserialize($_POST["PROPERTIES"], ['allowed_classes' => false]), 'PERSON_TYPE_ID' =>$personType));
4. Для решения АСПРО NEXT:
Аналогично, в местах, где используется функция unserialize, указать в качестве второго аргумента ['allowed_classes' => false] в этих файлах:/ajax/form.php
/ajax/reload_basket_fly.php
/ajax/show_basket_fly.php
/ajax/show_basket_popup.php
/include/mainpage/comp_catalog_ajax.php
/bitrix/components/aspro/oneclickbuy.next/script.php
Скачать скрипт закрывающий уязвимости на сайтах АСПРО (скрипт обновлен 11.02.2025)
Вы можете скачать скрипт, который автоматически закроет все уязвимости в вашем проекте: скачать тут.Но не забывайте, что это предотвращает взлом, а не лечит от проникших вирусов. После закрытия уязвимостей обязательно нужно очистить сайт от вируса.
Инструкция для скрипта
На вашем сервере должен быть PHP 7.4 или выше и включены модули `zip`, `session` и `file system`.
- Скачайте и распакуйте архив.
- Разместите файл `fixit.php` в корневой директории сайта.
- Откройте браузер и перейдите по адресу http://yourdomain.com/fixit.php
Настройки
Файл содержит несколько предопределённых констант, которые можно изменить при необходимости:
- Расширенное сканирование, включая код сторонних разработчиков`: скрипт отсканирует все папки модулей всех разработчиков.
- Создать .back для измененных файлов`: создаст back файлы в той же директории, где нашел и исправил файл (обязательно включайте).
- Создать .zip архив измененных файлов`: создаст в папке upload zip архив с первичными версиями файлов.
- Удалить скрипт после выполнения`: скрипт самоудалится после выполнения.
Важные замечания
- Убедитесь, что скрипт выполняется с достаточными правами доступа.
- Использование неправильных параметров может повлиять на файловую систему Bitrix.
- Перед запуском рекомендуется создать резервную копию данных.
- Разработчики рекомендуют с осторожностью использовать скрипт, так как внесенные изменения могут повлиять на работу системы.