Описание уязвимости #
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"