Описание уязвимости #
21 марта стало известно о новой RCE уязвимости в модулях стороннего разработчика Esolutions для CMS Bitrix. (BDU:2025-03006) В этот раз под раздачу попали плагины “Экспорт/Импорт товаров в Excel”. Уязвимость оценили на 8.8/10 баллов по CVSS 3.0.
Причем RCE подвержены сразу 6 модулей, а именно:
- Импорт из Excel - версии от 2.4.7 до 2.8.9
- Экспорт в Excel - версии от 0.8.2 до 1.2.2
- Экспорт/Импорт товаров в Excel - версии от 2.4.7 до 2.8.9
- Импорт из XML и YML - версии от 0.6.8 до 1.1.6
- Массовая обработка элементов инфоблока - версии от 0.5.9 до 0.7.7
- Многофункциональный экспорт/импорт в Excel - версии от 0.2.2 до 0.4.8
Cуммарно все эти модули были установлены более 6000 раз, что значительно увеличвает поверхность атаки.
Список уязвимых эндпоинтов:
/bitrix/modules/kda.importexcel/admin/iblock_import_excel_cron_settings.php
/bitrix/modules/kda.exportexcel/admin/iblock_export_excel_cron_settings.php
/bitrix/modules/esol.importexportexcel/admin/iblock_import_excel_cron_settings.php
/bitrix/modules/esol.importexportexcel/admin/iblock_export_excel_cron_settings.php
/bitrix/modules/esol.importxml/admin/import_xml_cron_settings.php
/bitrix/modules/esol.massedit/admin/profile.php
/bitrix/modules/esol.allimportexport/admin/cron_settings.php
/tmp_patcher911.php
Разработчик рекомендует обновить уязвимые модули либо самостоятельно добавить в самое начало уязвимых файлов модулей “заплатку”:
<?if(isset($_REQUEST['path']) && strlen($_REQUEST['path']) > 0)
{
header((stristr(php_sapi_name(), 'cgi') !== false ? 'Status: ' : $_SERVER['SERVER_PROTOCOL'].' ').'403 Forbidden');
die();
}
?>
Помимо этого, нам предлагают воспользоваться “Патчером”, который автоматически исправляет уязвимости. По умолчанию этот патчер имеет название tmp_patcher911.php
. Возможно кто-то после фикса забудет его убрать с сайта.
С исходным кодом патчера можете ознакомиться перейдя по ссылке.
Nuclei Checker #
Для того, чтобы оперативно узнать, использует ли целевое веб-приложение уязвимые модули, был написан небольшой чекер под nuclei:
id: bitrix-esol-excel-rce
info:
name: Bitrix Esol Excel RCE search
author: @shit_sec
severity: critical
description: Поиск потенциальных точек RCE в модулях импорта/экспорта Bitrix
tags: bitrix,exposure,cron
requests:
- method: GET
path:
- "{{BaseURL}}/bitrix/modules/kda.importexcel/admin/iblock_import_excel_cron_settings.php"
- "{{BaseURL}}/bitrix/modules/kda.exportexcel/admin/iblock_export_excel_cron_settings.php"
- "{{BaseURL}}/bitrix/modules/esol.importexportexcel/admin/iblock_import_excel_cron_settings.php"
- "{{BaseURL}}/bitrix/modules/esol.importexportexcel/admin/iblock_export_excel_cron_settings.php"
- "{{BaseURL}}/bitrix/modules/esol.importxml/admin/import_xml_cron_settings.php"
- "{{BaseURL}}/bitrix/modules/esol.massedit/admin/profile.php"
- "{{BaseURL}}/bitrix/modules/esol.allimportexport/admin/cron_settings.php"
- "{{BaseURL}}/bitrix/admin/esol_massedit_profile.php"
- "{{BaseURL}}/bitrix/admin/kda_export_excel_cron_settings.php"
- "{{BaseURL}}/bitrix/admin/esol_allimportexport_cron_settings.php"
- "{{BaseURL}}/bitrix/admin/kda_import_excel_cron_settings.php"
- "{{BaseURL}}/bitrix/admin/esol_export_xml_cron_settings.php"
- "{{BaseURL}}/bitrix/admin/esol_import_xml_cron_settings.php"
matchers-condition: and
matchers:
- type: status
status:
- 200
- type: word
part: body
words:
- "404"
- "Not found"
- "Авторизация"
- "Не найдено"
negative: true
- type: dsl
dsl:
- "len(body) > 1"