
اختبار اختراق الصندوق الأسود ضد HackSudo Thor: ثغرة CVE-2014-6271 Shellshock RCE عبر Apache mod_cgi، مع سلسلة من سوء تكوين sudo وحقن bash eval للحصول على تصعيد كامل للصلاحيات. يشمل أدوات تخمين مخصصة مدركة لـ CSRF وأتمتة Metasploit RPC.
الهدف: HackSudo Thor من VulnHub
الغاية: الحصول على وصول الجذر وقراءة/root/proof.txt
البيئة: مختبر VirtualBox معزول مقسّم بواسطة جدار حماية pfSense
يوثّق هذا المستودع اختبار اختراق جزئي من نوع الصندوق الأسود تم إجراؤه على HackSudo Thor، وهي آلة افتراضية قابلة للاختراق عمدًا منشورة على VulnHub بواسطة Vishal Waghmare. كان الهدف محاكاة هجوم واقعي حيث يحاول مهاجم خارجي اختراق نظام داخلي معزول مع الهدف الأساسي المتمثل في الحصول على وصول الجذر وقراءة محتويات /root/proof.txt.
يتبع التقييم دورة حياة اختبار الاختراق الكاملة: الاستطلاع السلبي، اكتشاف الشبكة، تعداد الموارد، تقييم الثغرات، الاستغلال، تصعيد الامتيازات، مرحلة ما بعد الاستغلال، وإخفاء الآثار.
الأدوات الأساسية المستخدمة كانت Nmap لمسح الشبكة، وNessus لتقييم الثغرات، وMetasploit Framework كمنصة رئيسية للاستغلال وما بعد الاستغلال. كما استُخدمت John the Ripper وHashcat وجداول Rainbow Tables عبر الإنترنت خلال مرحلة كسر كلمات المرور، ورغم ذلك باءت جميع المحاولات بالفشل في النهاية بسبب قوة خوارزمية التجزئة المستخدمة.
تم بناء المختبر الافتراضي بالكامل في VirtualBox وتصميمه لمحاكاة شبكة مؤسسية واقعية بثلاث مناطق أمنية متميزة، تديرها جميعًا جدار حماية pfSense 2.7.2. تم تكوين شبكات NAT الثلاث على النحو التالي: منطقة WAN تحاكي الإنترنت العام حيث توجد آلة المهاجم Kali، ومنطقة DMZ تستضيف الآلة المستهدفة، ومنطقة LAN داخلية تحتوي على آلات خارج النطاق.``` Internet Zone — NatNetwork (10.0.2.0/24) │ │ Kali Linux 2025.4 [attacker] — 10.0.2.9 │ pfSense WAN interface — 10.0.2.8 │ ├── pfSense Firewall (boundary device) │ ├── DMZ Zone — DMZnat (10.0.4.0/24) │ ├── HackSudo Thor [TARGET] — 10.0.4.3 │ └── DVWA — 10.0.4.4 (out of scope) │ └── LAN Zone — LANnat (10.0.3.0/24) ├── Metasploitable 2 — 10.0.3.5 (out of scope) └── Windows XP Cyberlab — 10.0.3.4 (out of scope)

*المناطق الأمنية لطوبولوجيا الشبكة المنطقية التي يديرها pfSense*
تم تعيين واجهة WAN إلى `10.0.2.8/24` عبر DHCP، وتم تعيين واجهة LAN إلى `10.0.3.1/24`، وتم تعيين واجهة OPT1 (المنطقة العازلة DMZ) إلى `10.0.4.1/24`. لإدخال خلل تكوين متعمد في المختبر، تم ترك المنفذ 80 مكشوفًا عمدًا على واجهة WAN الخاصة بـ pfSense، مما يحاكي تعرضًا شائعًا للوحة الإدارة في العالم الحقيقي وكان بمثابة نقطة الدخول الأساسية إلى الشبكة الداخلية.
---
## ملخص سلسلة الهجوم```
[Kali Linux — 10.0.2.9]
│
│ CSRF-aware Python brute force → admin / pfsense
▼
[pfSense webConfigurator — 10.0.2.8:80]
│
│ Firewall rules disabled → DMZ and LAN now reachable
▼
[HackSudo Thor — 10.0.4.3]
│
│ Shellshock RCE (CVE-2014-6271)
│ Apache mod_cgi → /cgi-bin/shell.sh
▼
[Meterpreter shell — www-data]
│
│ sudo -u thor /home/thor/hammer.sh
│ Command injection via eval → bash -i payload
▼
[Interactive shell — thor]
│
│ GTFOBins: sudo service ../../bin/bash
▼
[Root shell]
│
├── /root/proof.txt captured ✅
├── /etc/shadow + /etc/passwd exfiltrated
└── SSH RSA backdoor planted
قبل إجراء أي اتصال مع البيئة المستهدفة، تم جمع المعلومات حصريًا من المصادر العامة. كان المصدران الأساسيان هما صفحة إدخال VulnHub الرسمية لماكينة HackSudo Thor والملف التعريفي العام للمؤلف على GitHub.
أكدت صفحة VulnHub أن الهدف كان نظامًا يعمل بنظام Linux، بتصنيف صعوبة سهل إلى متوسط، مع هدف يتمثل في العثور على علامة proof.txt. أعطت مراجعة الملف التعريفي للمؤلف على GitHub نظرة إضافية. ففيشال واغماري (Vishal Waghmare) يصمم باستمرار ماكينات Linux من نمط boot-to-root مع تصعيد الامتيازات بوصفه التحدي الأساسي عبر سلسلة HackSudo بأكملها. وقد شكل هذا نموذج التهديد عند الانتقال إلى المراحل النشطة: فمن الأرجح أن تكون خدمتا HTTP وSSH هما سطح الهجوم، وتوقع مسار التصعيد أن يشمل سوء تكوين sudo أو استغلال ثنائيات SUID أو استغلال خدمة مخصصة.
هذا النوع من تحليل أنماط المؤلف مهم في التقييمات الحقيقية أيضًا. ففهم كيف يُرجَّح أن يكون النظام مصممًا وفئات نقاط الضعف التي يميل مسؤول النظام إلى تكرارها يمنح توجيهًا قبل إرسال حزمة واحدة.
تضمنت هذه المرحلة إجراء اتصال نشط مباشر مع البيئة. كان الهدف تحديد جميع المضيفين النشطين وفهم حدود الشبكة وبناء صورة كاملة لسطح الهجوم قبل تضييق نطاق التركيز على الهدف الأساسي.
تم أولًا تشغيل فحص ping خفيف عبر Nmap (-sn) ضد شبكة WAN (10.0.2.0/24) لاكتشاف المضيفين النشطين بأقل قدر من الضوضاء. تم تحديد ثلاثة مضيفين: كان 10.0.2.1 و10.0.2.2 عنوانين قياسيين للبنية التحتية لـ VirtualBox، مما ترك 10.0.2.8 بوصفه المضيف الوحيد غير المرتبط بالبنية التحتية. أصبح ذلك الجهاز محور التركيز الفوري.
أعاد فحص SYN خفي كامل ضد 10.0.2.8 أي نتائج على الإطلاق. كان هذا سلوكًا متوقعًا وليس خطأ. فجدران الحماية المؤسسية مصممة لتكون غير مستجيبة لفحص المنافذ، إذ تُسقط الحزم بصمت بدلًا من الرد. وكان غياب النتائج بحد ذاته تأكيدًا على أن هذا الجهاز هو جهاز حدود شبكة يقوم بتصفية حركة المرور بنشاط.
لتأكيد الخدمات التي تعمل فعلًا دون الاعتماد على فحص الحزم، تم إصدار طلب HTTP مباشر باستخدام curl. اعتُمد هذا الأسلوب لأن طلب الويب القياسي أقل عرضة بكثير للتصفية مقارنة بأداة الفحص. جاء الرد بتنسيق HTTP/1.1 200 OK مع Server: nginx وعنوان صفحة pfSense، مما أكد أن webConfigurator كان متاحًا مباشرة على المنفذ 80 من واجهة WAN.
بعد تأكيد صفحة تسجيل الدخول، كانت الخطوة التالية محاولة استعادة بيانات الاعتماد. اختيرت Hydra في البداية بوصفها أداة فرض القوة، لكن هذه المحاولة فشلت لسببين. الأول عملي: ملف rockyou.txt يحتوي على أكثر من 14 مليون إدخال، مما يجعل استخدامه غير عملي ضمن الإطار الزمني لهذا التقييم. والثاني تقني وأكثر أهمية: يطبّق pfSense 2.7.2 حماية رمز CSRF، مولّدًا رمزًا تشفيريًا فريدًا في كل تحميل للصفحة يجب إرساله مع بيانات الاعتماد. ترسل وحدة HTTP POST في Hydra نص طلب ثابتًا ولا تملك آلية لجلب رمز جديد ديناميكيًا لكل محاولة، لذا كان كل إرسال يُرفض قبل حتى التحقق من كلمة المرور.
للتغلب على ذلك، تمت كتابة سكربت Python مخصص لمحاكاة عملية تسجيل الدخول الكاملة التي يقوم بها المتصفح. لكل محاولة كلمة مرور، يفتح السكربت جلسة جديدة، ويحمّل صفحة تسجيل الدخول، ويستخرج رمز CSRF الحالي من نموذج HTML، ثم يرسل بيانات الاعتماد مع ذلك الرمز تمامًا كما يفعل المتصفح. تم بناء قائمة كلمات مخصصة باستخدام CeWL لزحف صفحة تسجيل دخول pfSense واستخراج المصطلحات ذات الصلة، ثم استُكملت بملف fasttrack.txt لتغطية بيانات الاعتماد الافتراضية المعروفة.
استعاد السكربت بيانات الاعتماد: admin / pfsense، وهي الافتراضية دون تغيير.
سكربت Python مخصص يستعيد بيانات اعتماد pfSense
مع تأمين الوصول إلى لوحة التحكم، تمت مراجعة تكوين واجهات pfSense لفهم البنية الداخلية الكاملة. كشف هذا عن شبكتين فرعيتين كانتا غير مرئيتين من WAN: شبكة LAN في 10.0.3.0/24 وشبكة DMZ في 10.0.4.0/24. ثم تم تعطيل قواعد جدار حماية WAN عبر الواجهة الإلكترونية، وأُضيفت قاعدتا مرور للسماح بحركة المرور من عنوان المهاجم إلى كلتا الشبكتين الفرعيتين.
حددت عمليات فحص ping عبر Nmap على الشبكتين الفرعيتين ستة مضيفين نشطين. تم تعداد أربعة منها بشكل إضافي، مع استبعاد 10.0.4.1 و10.0.3.1 اللذين يخصان واجهتي بوابة pfSense. تم تشغيل فحص تعداد خدمات مدمج مع كشف الإصدار وسكربتات NSE الافتراضية وبصمة نظام التشغيل ضد المضيفين الأربعة جميعًا في وقت واحد. وبمقارنة النتائج مع الاستطلاع السلبي، تم تحديد كل جهاز في البنية:
تم تأكيد الهدف بوصفه 10.0.4.3. تركزت جميع الأنشطة اللاحقة حصريًا على هذا الجهاز.
بعد تحديد الهدف، تم إجراء تحليل أعمق لخدماته لرسم خريطة سطح الهجوم وتحديد مسارات الاستغلال الممكنة. استُخدم Metasploit Framework بوصفه المنصة الأساسية لهذه المرحلة، وتحديدًا لأن قاعدة بيانات PostgreSQL الخلفية فيه تحفظ جميع نتائج الفحص عبر الجلسات؛ فالمضيفون والخدمات والثغرات مخزنة جميعها في قاعدة البيانات ومتاحة للرجوع إليها خلال المراحل اللاحقة دون إعادة الفحص.
قبل البدء، تمت تهيئة Metasploit باستخدام msfdb init، والتحقق من اتصال قاعدة البيانات باستخدام db_status، وأُجريت جميع الأعمال اللاحقة من داخل msfconsole.
استُخدم أمر db_nmap لتشغيل فحص كامل ضد 10.0.4.3 يشمل فحص SYN خفي، وكشف إصدار الخدمات، وسكربتات NSE الافتراضية، وبصمة نظام التشغيل، وجميع منافذ TCP البالغ عددها 65,535. خُزنت النتائج تلقائيًا في قاعدة البيانات واستُرجعت باستخدام hosts وservices. تم تأكيد ثلاث خدمات مفتوحة: FTP على المنفذ 21 يعمل بـ Pure-FTPd، وSSH على المنفذ 22 يعمل بـ OpenSSH 7.9p1، وHTTP على المنفذ 80 يعمل بـ Apache 2.4.38.
ثم تم تعداد كل خدمة بشكل إضافي باستخدام وحدات Metasploit المساعدة الموجّهة. نالت خدمة HTTP الاهتمام الأكبر. استُخدمت وحدتا dir_scanner وhttp_crawler لرسم خريطة جميع المسارات والنقاط النهائية المتاحة على خادم الويب. كان أهم اكتشاف من ذلك هو دليل /cgi-bin/ وسكربت باسم shell.sh. بشكل منفصل، كشفت مراجعة يدوية لشفرة HTML المصدرية لصفحة news.php عن تعليق مخفي من المؤلف يشير إلى دليل /cgi-bin/، وهو تلميح مقصود يوجّه نحو ثغرة قائمة على CGI. تم فحص خدمة FTP بحثًا عن الوصول المجهول (كان معطلًا)، وتم تدوين سلسلة الإصدار للرجوع إلى CVEs المقابلة. استُخرج شعار SSH للغرض نفسه.
مع اكتمال رسم خريطة سطح الهجوم، تم إجراء تقييم منظم للثغرات باستخدام نهجين: فحص Nessus آلي واستدلال يدوي للمهاجم مطبق على كل خدمة.
أُنشئت سياسة Nessus مخصصة مع تفعيل فحص CGI واختبار تطبيقات الويب صراحةً، مستهدفةً المنافذ 21 و22 و80. هذه الإعدادات غير مفعلة افتراضيًا وكانت حاسمة هنا؛ فبدونها لما تم اختبار نقطة نهاية CGI. استغرق الفحص حوالي 11 دقيقة وأعاد 41 نتيجة إجمالية. وكانت النتائج القابلة للتنفيذ:
كان اكتشافا Shellshock على /cgi-bin/shell.sh هما الأولوية فورًا. يحمل CVE-2014-6271 درجة CVSS تبلغ 9.8 ويتيح تنفيذ تعليمات برمجية عن بُعد دون مصادقة، وهو الاكتشاف الأعلى تأثيرًا في الفحص. يمثل CVE-2014-6278 تصحيحًا ناقصًا للثغرة نفسها، ما يعني أن الأنظمة المصدَّحة جزئيًا تظل قابلة للاستغلال. اعتُبرت ثغرة Terrapin في SSH غير قابلة للاستغلال دون موقع رجل في المنتصف. أما النتائج المتبقية فلم تكن لها قيمة استغلال ذات معنى في هذا التقييم.
قبل الانتقال إلى الاستغلال، تم التحقق من اكتشاف Shellshock بشكل مستقل باستخدام سكربت NSE http-shellshock في Nmap موجّهًا مباشرة إلى /cgi-bin/shell.sh. التحقق المستقل قبل الاستغلال خطوة مهمة في المنهجية، إذ يؤكد أن الثغرة حقيقية وليست نتيجة إيجابية كاذبة من الماسح الضوئي، ويتجنب إهدار الوقت بمحاولة استغلال لن تنجح. أكد سكربت NSE أن نقطة النهاية معرّضة للثغرة، وتم اختيار CVE-2014-6271 بوصفه ناقل الهجوم الأساسي.
بعد تأكيد Shellshock، بدأت مرحلة الاستغلال. تكمن الثغرة في أن Apache mod_cgi يمرر ترويسات طلبات HTTP كمتغيرات بيئة إلى Bash عند استدعاء سكربت CGI. في نسخة غير مصدَّحة من Bash، يتسبب تعريف دالة مصاغ بعناية داخل متغير بيئة في تنفيذ أي أوامر تُلحق بعد التعريف فورًا. وبحقن هذه الحمولة في ترويسة User-Agent لطلب موجّه إلى /cgi-bin/shell.sh، يمكن تنفيذ أوامر عشوائية على الخادم دون أي مصادقة.
تؤتمت وحدة Metasploit exploit/multi/http/apache_mod_cgi_bash_env_exec هذا بالكامل. تم ضبط الوحدة مع تعيين RHOSTS إلى 10.0.4.3، وTARGETURI إلى /cgi-bin/shell.sh، وتعيين الحمولة إلى linux/x86/meterpreter/reverse_tcp، وتوجيه المستمع عائدًا إلى جهاز Kali على المنفذ 4444. أرسل تشغيل الوحدة الطلب الخبيث، ونفذ الخادم الحمولة، واستقبل Metasploit الاتصال الوارد، ليثبت جلسة Meterpreter بصفة www-data.
استغلال Shellshock نُفذ وقشرة Meterpreter عكسية أُقيمت بصفة www-data
ابتداءً من www-data، كان مدى الوصول إلى النظام غير معروف في البداية. كانت الأولوية المباشرة فهم الموقف الحالي: من هو المستخدم النشط، وما الحسابات الأخرى الموجودة، وما المسارات المتاحة نحو امتيازات أعلى.
تم التحويل من جلسة Meterpreter إلى قشرة نظام خام، وتم توليد طرفية زائفة باستخدام وحدة pty في Python لإنشاء محطة تفاعلية مناسبة. كشفت قراءة /etc/passwd وسرد /home/ عن وجود مستخدم باسم thor على النظام. أرجعت عملية ls -la /home/thor/ الأولية رفض الصلاحية، لذا تم البحث في نظام الملفات عن أي ملفات يملكها thor بغض النظر عن صلاحيات الدلائل باستخدام find / -user thor 2>/dev/null. ومن خلال ذلك تم تحديد موقع ملف شاذ في /usr/local/sbin/ls، وهو ملف باسم ls ليس الثنائي النظامي القياسي. كشفت محتوياته أنه سكربت مخصص يملكه Thor، وتم تدوينه للتحقيق لاحقًا.
تم تنفيذ خطوة ما بعد الاستغلال القياسية المتمثلة في فحص صلاحيات sudo للمستخدم الحالي باستخدام sudo -l. كشف هذا أن www-data مخوَّل بتشغيل /home/thor/hammer.sh بصفة المستخدم thor دون الحاجة إلى كلمة مرور، وهي قاعدة NOPASSWD ليس لها أي مبرر تشغيلي مشروع.
sudo -l يؤكد أن www-data يمكنه تشغيل hammer.sh بصفة thor دون كلمة مرور
حُجب الوصول المباشر لقراءة hammer.sh بصلاحيات الدليل، لذا نُفذ أولًا باستخدام sudo -u thor /home/thor/./hammer.sh لمراقبة سلوكه. عرض السكربت مطالبتين تفاعليتين: "Secret Key" و"Secret Message". أعادت المطالبة الأولى الإدخال كتحية. أما الثانية فعالجت الإدخال ثم خرجت. كان التمييز بين هذين السلوكين مهمًا: فلو كانت كلتا المطالبتين تعيدان الإدخال فقط، لما كانت أي منهما مثيرة للاهتمام. حقيقة أن المطالبة الثانية عالجت الإدخال قبل الرد تشير إلى أنها تمرر القيمة إلى أمر قشرة، وهو نمط يتوافق مع تعليمة eval، التي تُعد سطح هجوم موثقًا جيدًا لحقن الأوامر.
عند تنفيذ ثانٍ، تم تمرير إدخال فارغ إلى المطالبة الأولى، وزُوِّدت الثانية بحمولة الحقن bash -i. أدى ذلك إلى إطلاق قشرة تفاعلية بصفة thor.
حمولة bash -i محقونة في hammer.sh
تم تشغيل sudo -l مرة أخرى بصفة thor. كشف هذا عن وصول NOPASSWD غير مقيد إلى كل من /usr/bin/cat وservice بصلاحيات root. كانت قاعدة service الأكثر أهمية. تتيح تقنية GTFOBins sudo service تمرير سلسلة اجتياز مسار كوسيطة لاسم الخدمة. يؤدي توفير ../../bin/bash إلى جعل ثنائي service يحل المسار واستدعاء /bin/bash بصلاحيات root.```bash
sudo service ../../bin/bash
أنتج هذا شل جذر كامل.

*تم الحصول على شل الجذر عبر GTFOBins مع تأكيد تجاوز المسار في sudo service*
## المرحلة 7: ما بعد الاستغلال
مع تأكيد هوية الجذر، ركزت مرحلة ما بعد الاستغلال على ثلاثة مجالات: فهم بيئة النظام، واستخراج البيانات الحساسة، وتأسيس وصول مستمر.
### معلومات النظام والعلم
تم تنفيذ جرد أساسي للنظام أولاً لتأكيد هوية الهدف وبناء سياق لتوصيات المعالجة، بما في ذلك إصدار النواة، وإصدار نظام التشغيل، وإعدادات الشبكة. تم تأكيد النظام على أنه Debian GNU/Linux 10 (Buster) يعمل بنواة 4.19.0-17-686-pae على `10.0.4.3`.
تم عرض الدليل الرئيسي لحساب الجذر، والذي كشف عن `proof.txt` و`root.txt`. تمت قراءة ملف `proof.txt` لالتقاط العلم الأساسي، وهو الهدف المعلن لهذه المهمة.

*محتويات proof.txt مع التقاط العلم الأساسي*
### استخراج بيانات الاعتماد وكسر كلمات المرور
تم نسخ ملفي `/etc/shadow` و`/etc/passwd` إلى `/tmp` وتنزيلهما إلى جهاز المهاجم عبر Meterpreter. يوفر هذان الملفان معاً حسابات مستخدمي النظام وتجزئات كلمات المرور اللازمة للكسر دون اتصال.
تمت محاولة عدة أساليب للكسر. حدد John the Ripper كلا التجزئتين على أنهما SHA-512crypt بعامل تكلفة يبلغ 5,000 تكرار. أُجهضت المحاولة الأولى باستخدام `rockyou.txt` بعد تشغيلها لساعات دون نتيجة. التكلفة الحسابية لخوارزم SHA-512crypt تجعل هجمات القاموس الشاملة بطيئة جداً دون تسريع GPU. اكتملت المحاولة الثانية بقائمة كلمات مخصصة وموجهة بُنيت من معلومات استخباراتية جُمعت خلال مرحلة الاستطلاع بسرعة، لكنها لم تُسفر عن أي تطابق.
ثم جُرّب CrackStation كخدمة جداول قوس قزح عبر الإنترنت، لكنها أعادت صيغة تجزئة غير معروفة لكلا المدخلين. كان هذا متوقعاً، إذ يضيف SHA-512crypt ملحاً عشوائياً فريداً إلى كل تجزئة قبل التجزئة، مما يعني أن كلمة المرور نفسها تنتج تجزئة مختلفة لكل حساب. تعمل جداول قوس قزح عن طريق حساب التجزئات مسبقاً لكلمات المرور المعروفة، لكن يلزم جدول منفصل لكل قيمة ملح محتملة، مما يجعل الأسلوب غير عملي تماماً ضد التجزئات المملحة.
استُخدم Hashcat في المحاولات النهائية، مع ثلاث قوائم كلمات على التوالي: `fasttrack.txt` (استُنفدت في 4 ثوانٍ)، وقائمة مخصصة موجهة (استُنفدت دون أي تطابق)، وأول 100,000 مدخل من `rockyou.txt` (فشلت بعد 3 دقائق). باءت جميع محاولات كسر كلمات المرور بالفشل. استخدام SHA-512crypt المملح مع عدد تكرارات مرتفع هو السبب؛ إذ صُمم الخوارزم ليكون مكلفاً حسابياً، تحديداً لمقاومة هذا النوع من الهجمات دون اتصال.
### البحث عن مفاتيح SSH
كما أُجري بحث في نظام الملفات عن ملفات مفاتيح RSA الخاصة وشهادات PEM باستخدام `find`. أي مفتاح خاص يُعثر عليه قد يمنح الوصول إلى أنظمة أخرى تثق بالمفتاح العام المقابل، وهي فرصة ثمينة للحركة الجانبية. لم يُعثر على أي مفاتيح خاصة تابعة لأنظمة أخرى.
### نشر الباب الخلفي
تم تنفيذ الوصول المستمر عن طريق حقن مفتاح RSA عام في ملف `authorized_keys` لحساب الجذر. اختيرت المصادقة بمفتاح SSH لأنها لا تعتمد على كلمات المرور ويصعب اكتشافها ما لم يُدقق ملف `authorized_keys` تحديداً. تم توليد زوج مفاتيح RSA بطول 4096 بت على جهاز Kali، وأُضيف المفتاح العام إلى `/root/.ssh/authorized_keys` على الهدف مع ضبط صلاحيات المجلد والملف بشكل صحيح. تم إنشاء اتصال عائد إلى الهدف باستخدام المفتاح الخاص للتحقق من أن الباب الخلفي يعمل.

*تأكيد الوصول المستمر للجذر عبر المصادقة بالمفتاح الخاص*
### الأتمتة
كما تم تطوير سكربت Python مخصص لـ Metasploit RPC (`thor_full_chain.py`) لأتمتة سلسلة ما بعد الاستغلال بأكملها. يتصل السكربت بجلسة Metasploit RPC نشطة ويتعامل مع التسلسل الكامل: تثبيت شل `www-data`، وحقن hammer.sh للتصعيد إلى thor، والتصعيد عبر GTFOBins إلى الجذر، والتقاط العلم، واستخراج بيانات الاعتماد، ونشر الباب الخلفي، مع تسجيل بعلامات زمنية يُحفظ في ملف محلي. كان هذا مُخرَجاً إضافياً يوضح قدرة أتمتة سلسلة الهجوم باستخدام واجهة Metasploit RPC API. راجع `scripts/thor_full_chain.py` للتنفيذ الكامل.
## المرحلة 8: طمس الآثار
تضمنت المرحلة النهائية إزالة أدلة الاختراق من كل من النظام الهدف وجهاز المهاجم Kali. على الهدف، كان سجل وصول Apache هو الملف الأكثر حرجاً في التنظيف، لأنه احتوى على طلب HTTP الخام لثغرة Shellshock الذي أشعل الاستغلال الأولي. تم تنظيف سجل المصادقة، لأنه خزّن كل أمر sudo استُخدم خلال مرحلة التصعيد. كما استُبدلت syslog، وسجلات تسجيل الدخول الثنائية (`wtmp`, `btmp`, `lastlog`)، وسجل bash لكل من `root` و`www-data`، وجرى التحقق من أنها فارغة.
على Kali، تم إسقاط مساحة عمل Metasploit باستخدام `workspace -d default`، وإزالة ملفات بيانات الاعتماد التي تم تنزيلها، وحذف زوج مفاتيح SSH، ومسح سجل bash. تم التحقق من كل خطوة قبل الانتقال إلى التالية.
تم استثناء واحد متعمد يتعلق بالباب الخلفي SSH، حيث أُبقي على ملفات المفاتيح المرتبطة به على الهدف ولم تُحذف في هذه المرحلة، لأنها كانت مطلوبة لأغراض العرض التوضيحي في عرض التقييم.
## الثغرات المستغلة
| الثغرة | CVE | CVSS | المكوّن | الأسلوب |
|--------------|-----|------|-----------|--------|
| Shellshock RCE | CVE-2014-6271 | 9.8 | Apache mod\_cgi + Bash غير محدّث | Metasploit مع ترويسة User-Agent خبيثة |
| بيانات اعتماد افتراضية | — | — | pfSense webConfigurator | `admin / pfsense` دون تغيير بعد التثبيت |
| سوء تكوين Sudo (www-data) | — | — | `/etc/sudoers` | NOPASSWD `hammer.sh` قابل للتنفيذ بصلاحيات thor |
| حقن أوامر في hammer.sh | — | — | سكربت bash مخصص | حقن `eval` عبر حمولة `bash -i` |
| سوء تكوين Sudo (thor) | — | — | `/etc/sudoers` | `service` غير مقيد NOPASSWD بصلاحيات الجذر |
---
## الأدوات المستخدمة
| الأداة | الغرض |
|------|---------|
| Nmap | اكتشاف المضيفين، فحص المنافذ، تحديد بصمة نظام التشغيل، التحقق من Shellshock عبر NSE |
| Metasploit Framework | جرد مدعوم بقاعدة بيانات، استغلال، Meterpreter، ما بعد الاستغلال |
| Nessus Essentials | تقييم منظم للثغرات مع فحص CGI وتطبيقات الويب |
| Hydra | محاولة هجوم قوة عمياء أولية على pfSense غير ناجحة بسبب حماية CSRF |
| CeWL | توليد قائمة كلمات مخصصة عبر زحف صفحة تسجيل الدخول في pfSense |
| Python 3 + BeautifulSoup | سكربت قوة عمياء لـ pfSense يراعي CSRF |
| pymetasploit3 | عميل واجهة Metasploit RPC API لأتمتة سلسلة الهجوم الكاملة |
| John the Ripper | كسر تجزئات SHA-512crypt دون اتصال |
| Hashcat | محاولات كسر SHA-512crypt بمعجّل GPU |
| CrackStation | بحث عبر الإنترنت في جداول قوس قزح |
| GTFOBins | مرجع لتقنية تصعيد الصلاحيات عبر sudo service |
| curl | التحقق من خدمة HTTP مقابل واجهة WAN الخاصة بـ pfSense |
---
## التوصيات
**حدّث Bash فوراً.** توجد ثغرة Shellshock لأن Bash لم يتم تحديثه أبداً على نظام Debian 10 هذا. تشغيل `apt-get update && apt-get upgrade bash` يزيل الثغرة. إلى جانب التحديث، إذا لم تكن سكربتات CGI مطلوبة تشغيلياً، فيجب تعطيل دليل `/cgi-bin/` بالكامل في إعدادات Apache، مما يزيل سطح الهجوم بغض النظر عن إصدار Bash.
**دقّق وصلّب قواعد sudo.** شكلت قاعدتا sudo من نوع NOPASSWD سلسلة تصعيد الصلاحيات بأكملها. لا يوجد مبرر شرعي لأي من القاعدتين. يجب مراجعة ملف `/etc/sudoers` وإزالة المدخلين معاً. يجب أن يخضع أي تكوين مستقبلي لـ sudo لمبدأ الامتياز الأقل؛ إذ ينبغي أن تمتلك الحسابات فقط الوصول المحدد الذي تحتاجه فعلياً، لا أكثر.
**أزل eval من سكربتات القشرة.** مرّر سكربت `hammer.sh` مدخلات المستخدم مباشرة إلى عبارة `eval` دون أي تحقق أو تعقيم. هذا ما جعل حقن الأوامر ممكناً. يجب تجنب استخدام `eval` تماماً في سكربتات القشرة التي تقبل مدخلات المستخدم، لأنه يمثل سطح هجوم في几乎所有 الحالات. يجب التحقق من المدخلات مقابل قائمة سماح صارمة قبل أي معالجة.
**غيّر بيانات اعتماد pfSense الافتراضية وقيّد الوصول.** كان webConfigurator مكشوفاً على واجهة WAN باستخدام بيانات الاعتماد الافتراضية غير المتغيرة `admin / pfsense`. يجب تغيير بيانات الاعتماد الافتراضية فوراً بعد التثبيت. يجب ألا يكون webConfigurator قابلاً للوصول من WAN أبداً؛ بل يجب تقييد الوصول إلى الشبكة المحلية LAN أو واجهة إدارة مخصصة فقط.
**طبّق تسجيلاً مركزياً.** في المرحلة 8، مُسحت جميع السجلات المحلية خلال دقائق، دون ترك أي أثر للاختراق على النظام الهدف. أظهر هذا أن الهدف لم يكن لديه إدارة سجلات مركزية. في بيئة الإنتاج، يجب إعادة توجيه السجلات في الوقت الفعلي إلى SIEM بعيد. يضمن ذلك أنه حتى إذا مسح المهاجم السجلات محلياً، تكون الأدلة قد حُفظت بالفعل خارج النظام ولا يمكن العبث بها.
---
## بنية المستودع```
hacksudo-thor-pentest/
│
├── README.md
├── report.pdf ← Full penetration testing report
│
├── scripts/
│ ├── pfsense_brute.py ← CSRF-aware pfSense brute force script
│ └── thor_full_chain.py ← Metasploit RPC attack chain automation
│
└── screenshots/
├── network.PNG
│
├── Discovery/
│ └── pfsenselogin.png
│
└── exploit/
├── sheellockexploit.PNG
├── sudol.PNG
├── hammer.bash-i.PNG
├── privilage escaltiontoroot.PNG
├── proof.PNG
└── backdoor.PNG
تم إجراء اختبار الاختراق هذا حصريًا داخل بيئة مختبر افتراضية معزولة قائمة بذاتها تم بناؤها في Oracle VirtualBox. HackSudo Thor عبارة عن جهاز CTF ضعيف عن قصد تم نشره على VulnHub لغرض صريح هو التعليم والممارسة في مجال الأمن.
| الحقل | التفاصيل |
|---|
| الهدف | HackSudo Thor |
| المؤلف | Vishal Waghmare (@hacksudo) |
| الإصدار | 3 أغسطس 2021 |
| الصعوبة | سهلة إلى متوسطة |
| نظام التشغيل | Linux (Debian) |
| الصيغة | VirtualBox OVA |
| DHCP | مفعّل |
| سطح الهجوم المتوقع | HTTP، SSH، سوء تكوين sudo محتمل |
| العنوان IP | الخدمات الرئيسية | نظام التشغيل | تم تحديده كـ |
|---|
| 10.0.4.3 | SSH 7.9p1, Apache 2.4.38, FTP | Linux (Debian) | HackSudo Thor |
| 10.0.4.4 | Apache 2.4.29, DVWA v1.10 | Linux (Ubuntu) | DVWA |
| 10.0.3.4 | Microsoft IIS 5.1 | Windows XP/2003 | WinXP Cyberlab |
| 10.0.3.5 | vsftpd 2.3.4, SSH, Apache 2.2.8 | Linux (Ubuntu) | Metasploitable 2 |
| الشدة | النتيجة | CVE | CVSS v3 |
|---|
| حرجة | Shellshock RCE | CVE-2014-6271 | 9.8 |
| حرجة | إصلاح ناقص لـ Shellshock | CVE-2014-6278 | 8.8 |
| متوسطة | ثغرة Terrapin في SSH | CVE-2023-48795 | 5.9 |
| متوسطة | أدلة ويب قابلة للتصفح | — | 5.3 |
| متوسطة | Clickjacking / غياب X-Frame-Options | CWE-693 | 4.3 |
| منخفضة | كشف الطابع الزمني عبر ICMP | CVE-1999-0524 | 2.1 |