Установочный скрипт bitrixsetup.php входит в экосистему CMS 1С-Битрикс и используется для развертывания продукта на хостинге. На практике его часто забывают удалить после установки, и он остается доступным из сети, превращаясь в точку атаки. Производитель зафиксировал уязвимость в этом скрипте как сочетание некорректной обработки ошибок и отсутствия проверки входных параметров, что приводит к связке XSS плюс чтение файлов операционной системы OS.
Уязвимость формализована в реестре БДУ ФСТЕК под идентификатором BDU 2024 01501, а в рекомендациях отдельно подчеркивается необходимость удаления bitrixsetup.php из корня сайта после установки CMS. Понимание внутренней логики скрипта позволяет не только корректно оценивать риск, но и строить практические сценарии тестирования в легитимной лабораторной среде.
Модель уязвимости в bitrixsetup.php
Ключевую роль в реализации уязвимости играет параметр filename в запросах к bitrixsetup.php с действием action UNPACK. Пользовательское значение этого параметра без фильтрации передавалось в объект архиватора, а затем попадало в текст ошибки и логов установки, где выводилось без контекстного экранирования. В результате ошибка содержала фрагмент строки filename "как есть", что образует классическую отраженную XSS.
Одновременно тот же параметр filename использовался и как путь до архива на файловой системе. Отсутствие строгой проверки и нормализации пути позволяло сформировать значение, указывающее не на архив tar gz, а на произвольный локальный файл. При попытке распаковать его заголовок интерпретировался как данные архива, а сообщения об ошибке частично раскрывали содержимое файла. Это создает уязвимость типа локальное чтение файлов LFR Local File Read с классом раскрытия информации Information Disclosure.
Исследователи показали, что через такой механизм можно прочитать критичные конфигурационные файлы 1С-Битрикс например стандартный bitrix.php interface_dbconn.php с параметрами подключения к базе данных. В ряде конфигураций дополнительно использовался параметр seek который позволял управлять смещением чтения внутри файла. В сумме это превращает установщик в независимый канал доступа к чувствительным данным.
Практическая проверка в контролируемой среде
Для безопасного изучения уязвимости достаточно развернуть лабораторный стенд с bitrixsetup.php и типовой конфигурацией web сервера. Один из практичных вариантов это контейнер с PHP и Apache, куда кладется скрипт установщика.
docker run -p 8000:80 -v $PWD:/var/www/html php:8.1-apache
После копирования bitrixsetup.php в рабочий каталог контейнера можно переходить к тестированию. Для проверки отраженной XSS удобно использовать параметр filename с заведомо некорректным значением и отслеживать появление этого значения в ответе и HTML DOM. Пример простого запроса через curl к локальному стенду:
curl "http://localhost:8000/bitrixsetup.php?action=UNPACK&filename=%3Cscript%3Ealert(1)%3C/script%3E"
Если скрипт уязвим, фрагмент с тегом script появится в теле ответа без экранирования, а при открытии URL в браузере в контексте страницы выполнится внедренный JavaScript. В реальных атаках вместо демонстрационного alert используется полезная нагрузка для кражи сессионных токенов или подмены интерфейса, но при аудите достаточно безопасных пейлоадов.
Для проверки чтения файлов используется тот же параметр filename, но уже со значением, имитирующим обход каталогов и доступ к конфигурации. В лабораторной среде можно ориентироваться на стандартные файлы 1С-Битрикс, например:
curl "http://localhost:8000/bitrixsetup.php?action=UNPACK&filename=../../bitrix/php_interface/dbconn.php"
Ответ установщика при уязвимой конфигурации будет содержать первые строки целевого файла в тексте ошибки или служебном выводе. При наличии параметра seek можно циклически сдвигать смещение чтения и собирать содержимое частями. Такой подход оправдан только в лаборатории или в рамках утвержденного тестирования на проникновение с письменным разрешением владельца ресурса.




