Дмитрий Рогачев
Рассказываю как строю свой ИТ-бизнес в России без "маркетинга". Ежедневно делюсь нашим опытом. · 05.02
🚨 Новая волна вирусов на Битриксе — сайты снова под ударом
С 3 февраля 2025 года началась третья крупная волна взломов сайтов на Битриксе. Если ваш сайт: 🔴 Открывается, но не работают каталог, блог или новости 🔴 Не пускает в админку (Forbidden You don't have permission to access /bitrix/) 🔴 Лежит после обновления или без видимой причины
...то вы, возможно, уже в списке пострадавших.
👉 Что делать? Взломы происходят через необновленный шаблон АСПРО. В идеале — установите обновления. Если это невозможно, исправьте уязвимости вручную:
1. Файл /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 В этих файлах заменить $arParams = unserialize(urldecode($_REQUEST["PARAMS"])); на $arParams = json_decode($_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]);
Кстати, если кто не знал, мы в https://la-chatte.com/ занимаемся техподдержкой сайтов на Битриксе. Если не получается разобраться самостоятельно — обращайтесь, будем рады помочь и защитить ваш сайт от атак.
Рогачев Дмитрий: ИТ бизнес без рокетсайн 🚀 https://t.me/itrubiz
еще контент автора
еще контент автора
Дмитрий Рогачев
Рассказываю как строю свой ИТ-бизнес в России без "маркетинга". Ежедневно делюсь нашим опытом. · 05.02
войдите, чтобы увидеть
и подписаться на интересных профи