اختراق منصة Hack The Box – Blocky: دليل شامل لاختبار الاختراق ورفع الامتيازات

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

مقدمة إلى Hack The Box و تحدي Blocky

تُعد منصة Hack The Box (HTB) بيئة تدريبية افتراضية رائدة عبر الإنترنت، مصممة خصيصًا لتمكين المتخصصين والهواة في مجال الأمن السيبراني من صقل مهاراتهم في اختبار الاختراق. توفر المنصة مجموعة واسعة من التحديات المتجددة باستمرار، والتي تتراوح بين محاكاة سيناريوهات العالم الحقيقي المعقدة وتحديات أقرب إلى أسلوب مسابقات التقاط العلم (CTF).

ملاحظة هامة: يُسمح بنشر شروحات الآلات التي خرجت من الخدمة على منصة HTB فقط.

صورة توضيحية لمنصة Hack The Box وشعار تحدي Blocky

تُعتبر آلة Blocky بسيطة نسبيًا في مجملها، وقد استندت إلى سيناريو حقيقي. تُسلط هذه الآلة الضوء على المخاطر الجسيمة المترتبة على ممارسات كلمات المرور الضعيفة، بالإضافة إلى خطورة كشف الملفات الداخلية الحساسة على نظام مواجه للجمهور. في هذا الدليل، سنستخدم مجموعة من الأدوات المتخصصة على نظام Kali Linux لاختراق هذه الآلة:

  • nmap: لاستكشاف الشبكة والمنافذ.
  • nikto: لمسح خوادم الويب بحثًا عن الثغرات.
  • gobuster: لاكتشاف الدلائل والملفات المخفية.
  • wpscan: لمسح تثبيتات ووردبريس بحثًا عن نقاط الضعف.
  • jd-gui: لفك تجميع ملفات Java JAR.
  • hash-identifier: لتحديد أنواع التجزئة (الهاش).

لنبدأ رحلتنا في اختبار الاختراق.

أولًا، سنضيف اسم المضيف blocky.htb إلى ملف /etc/hosts لربطه بعنوان IP الخاص بالآلة (10.10.10.37). هذا يسهل التعامل مع الآلة باستخدام اسمها بدلًا من IP:

nano /etc/hosts
10.10.10.37 blocky.htb

إضافة اسم المضيف blocky.htb إلى ملف /etc/hosts في Kali Linux

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

تُعد مرحلة الاستطلاع هي اللبنة الأساسية قبل الشروع في استغلال أي نظام. إنها الجزء الأكثر أهمية، حيث تُحدد المسارات المحتملة للاستغلال اللاحق. يُفضل دائمًا قضاء وقت كافٍ في هذه المرحلة لجمع أكبر قدر ممكن من المعلومات.

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

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

نتائج مسح Nmap الأولي لـ Blocky.htb

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

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

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

nmap blocky.htb

نتائج مسح Nmap للمنافذ المفتوحة فقط على blocky.htb

من خلال نتائج المسح، نلاحظ وجود ثلاثة منافذ مفتوحة:

  • Port 21: بروتوكول نقل الملفات (FTP) للتحكم والأوامر.
  • Port 22: بروتوكول القشرة الآمنة (SSH)، يُستخدم لتسجيل الدخول الآمن، ونقل الملفات (scp، sftp)، وتوجيه المنافذ.
  • Port 80: يُستخدم غالبًا بواسطة بروتوكول نقل النص التشعبي (HTTP).

مسح الدلائل باستخدام Gobuster و Nikto و WPScan

سنستخدم أداة Gobuster، وهي ماسح دلائل مكتوب بلغة Go. تعتمد Gobuster على قوائم الكلمات (wordlists) الموجودة في نظام Kali Linux ضمن الدليل /usr/share/wordlists. سنستخدم قوائم الكلمات من dirb و dirbuster، ويمكنك تنزيل المزيد من القوائم من SecLists.

تشغيل Gobuster لمسح الدلائل على blocky.htb

لتشغيل Gobuster باستخدام قائمة الكلمات common.txt من dirb:

gobuster dir -u blocky.htb -w /usr/share/wordlists/dirb/common.txt

نتائج مسح Gobuster التي تكشف عن دلائل ووردبريس و phpMyAdmin

نلاحظ وجود دلائل خاصة بـ WordPress مثل (wp-admin، wp-content، wp-includes). كما توجد صفحات أخرى مثيرة للاهتمام مثل (/phpmyadmin و /plugins).

بعد ذلك، سنستخدم Nikto، وهو ماسح خوادم ويب مفتوح المصدر يقوم بإجراء اختبارات شاملة ضد خوادم الويب. يتحقق Nikto من الإصدارات القديمة لأكثر من 1250 خادمًا، والمشاكل الخاصة بالإصدارات على أكثر من 270 خادمًا. كما يتحقق من عناصر تكوين الخادم مثل وجود ملفات فهرس متعددة، وخيارات خادم HTTP، ويحاول تحديد خوادم الويب والبرامج المثبتة.

تشغيل Nikto لمسح الثغرات على خادم blocky.htb

لتشغيل المسح باستخدام Nikto:

nikto -host blocky.htb

نتائج مسح Nikto التي تكشف عن دلائل ووردبريس مثيرة للاهتمام

تُظهر نتائج Nikto بعض الدلائل التي قد تكون مفيدة مثل (/wp-content/uploads/ و /wp-login.php).

أخيرًا، سنستخدم WPScan، وهو ماسح ثغرات WordPress من نوع الصندوق الأسود (black box) يمكن استخدامه لمسح تثبيتات WordPress عن بُعد للعثور على مشكلات أمنية.

تشغيل WPScan لمسح ثغرات ووردبريس على blocky.htb

لتشغيل المسح باستخدام WPScan:

wpscan --url blocky.htb -e

جزء من نتائج WPScan يظهر معلومات عن المستخدمين
نتيجة WPScan النهائية التي تكشف عن اسم المستخدم Notch

من خلال WPScan، تمكنا من اكتشاف اسم مستخدم واحد وهو Notch.

الخطوة 2: استكشاف صفحات الويب المكتشفة

بعد جمع المعلومات الأولية، حان الوقت لزيارة الصفحات التي اكتشفناها خلال مرحلة الاستطلاع. لنبدأ بالصفحة الرئيسية للموقع، والتي تبين أنها مدونة حول لعبة Minecraft باسم BlockyCraft.

الصفحة الرئيسية لمدونة BlockyCraft
صفحة المدونة الرئيسية BlockyCraft

قمنا بالبحث في صفحة wiki، ولكن لم نجد أي معلومات مثيرة للاهتمام.

صفحة Wiki الخاصة بـ BlockyCraft

كما قمنا بزيارة صفحة /wp-content/uploads، ولم تسفر عن أي نتائج مفيدة.

دليل wp-content/uploads على موقع BlockyCraft

بعد ذلك، اكتشفنا لوحة تحكم المسؤول (admin panel) الخاصة بالموقع:

لوحة تحكم المسؤول (admin panel) لموقع BlockyCraft

بالإضافة إلى لوحة تحكم phpMyAdmin:

لوحة تحكم phpMyAdmin

اكتشاف ملفات JAR واستغلالها

بالانتقال إلى مجلد /plugins، وجدنا ملفين بصيغة .jar. ملف JAR هو تنسيق ملف حزمة يُستخدم عادةً لتجميع العديد من ملفات فئات Java والبيانات الوصفية والموارد المرتبطة بها في ملف واحد للتوزيع. ملفات JAR هي ملفات أرشيف تتضمن ملف manifest خاص بـ Java، وهي مبنية على تنسيق ZIP وعادةً ما يكون لها امتداد .jar.

قمنا بتنزيل كلا الملفين إلى نظام Kali Linux الخاص بنا.

تنزيل ملفات JAR من مجلد /plugins

لاستكشاف محتوى ملفات Java، استخدمنا أداة JD-GUI لفك تجميعها. JD-GUI هي أداة رسومية مستقلة تعرض أكواد مصدر Java لملفات .class.

قمنا بتشغيل الأداة بالأمر:

jd-gui

ثم اخترنا ملف Java class الذي أردنا قراءته، وهو BlockyCore.class.

فتح ملف BlockyCore.class باستخدام JD-GUI

داخل الملف، تمكنا من رؤية اسم مستخدم وكلمة مرور:

اكتشاف اسم المستخدم وكلمة المرور داخل BlockyCore.class

الوصول إلى phpMyAdmin وتحديد الهاش

عدنا إلى لوحة تحكم phpMyAdmin وأدخلنا بيانات الاعتماد التي وجدناها للتو. تمكنا من الوصول إلى قاعدة البيانات بنجاح.

الوصول إلى قاعدة بيانات phpMyAdmin باستخدام بيانات الاعتماد المكتشفة

استكشفنا جدول wp_users ضمن مجلد wordpress لمعرفة ما إذا كان بإمكاننا الحصول على مزيد من المعلومات حول مستخدمي المدونة.

استخدمنا استعلام SQL التالي:

SELECT * FROM `wp_users`

الذي يعني "حدد جميع المستخدمين من جدول wp_users"، وقد أعطانا نتيجة واحدة فقط، وهي المستخدم Notch.

نتائج استعلام SQL لجدول wp_users في phpMyAdmin

لتحديد نوع التجزئة (الهاش) لكلمة المرور التي عثرنا عليها، استخدمنا أداة hash-identifier. هذه الأداة تُستخدم لتحديد الأنواع المختلفة من التجزئات المستخدمة لتشفير البيانات، وخاصة كلمات المرور.

قمنا بتشغيل hash-identifier بالأمر التالي:

hash-identifier

وقمنا بنسخ ولصق كلمة المرور المجزأة التي حصلنا عليها سابقًا:

تحديد نوع الهاش باستخدام hash-identifier

أظهرت النتائج أن الهاش على الأرجح هو من نوع MD5 (WordPress).

الخطوة 3: استغلال المنفذ 22 (SSH)

عدنا إلى الطرفية (terminal) وقمنا بالاتصال باستخدام بروتوكول SSH. بروتوكول SSH (المشار إليه أيضًا باسم Secure Shell) هو طريقة لتسجيل الدخول الآمن عن بُعد من جهاز كمبيوتر إلى آخر. يوفر العديد من الخيارات البديلة للمصادقة القوية، ويحمي أمن وسلامة الاتصالات بتشفير قوي. إنه بديل آمن لبروتوكولات تسجيل الدخول غير المحمية (مثل telnet و rlogin) وطرق نقل الملفات غير الآمنة (مثل FTP).

استخدمنا الأمر التالي للاتصال:

ssh notch@10.10.10.37

وأدخلنا كلمة المرور التي وجدناها في ملف BlockyCore.class سابقًا.

الاتصال بالآلة عبر SSH باستخدام اسم المستخدم Notch وكلمة المرور

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

أصبحنا الآن متصلين كالمستخدم Notch. قمنا بسرد جميع المجلدات/الملفات باستخدام الأمر ls:

سرد الملفات في دليل المستخدم Notch

وجدنا ملف user.txt! لقراءة محتوى الملف، استخدمنا الأمر:

cat user.txt

الآن بعد أن حصلنا على علم المستخدم، لنبحث عن علم الجذر (root flag)!

الخطوة 5: رفع الامتيازات (Privilege Escalation)

للتحقق من امتيازات المستخدم الحالي، استخدمنا الأمر sudo. sudo هو برنامج لأنظمة تشغيل شبيهة بـ Unix يسمح للمستخدمين بتشغيل البرامج بامتيازات أمان مستخدم آخر، وهو افتراضيًا المستخدم الخارق (superuser). كان اسمه في الأصل "superuser do" حيث صُممت الإصدارات القديمة من sudo لتشغيل الأوامر فقط بصلاحيات المستخدم الخارق.

التحقق من امتيازات sudo للمستخدم Notch

لسرد امتيازات المستخدم، استخدمنا هذا الأمر:

sudo -l

استخدمنا نفس كلمة المرور التي وجدناها سابقًا.

نتائج sudo -l تظهر امتيازات المستخدم Notch

نلاحظ أن المستخدم Notch لديه امتيازات غير محدودة ويمكنه تشغيل أي أمر على النظام. قمنا بالتحقق من الهوية (id). يُستخدم الأمر id في Linux لمعرفة أسماء المستخدمين والمجموعات ومعرفاتهم الرقمية للمستخدم الحالي أو أي مستخدم آخر على الخادم.

التحقق من هوية المستخدم باستخدام الأمر id

لرفع الامتيازات إلى المستخدم الجذر (root)، استخدمنا الأمر التالي:

sudo su

رفع الامتيازات إلى المستخدم الجذر باستخدام sudo su

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

أصبحنا الآن مستخدمًا جذريًا (root user) ويمكننا التنقل إلى مجلد الجذر (root folder).

التنقل إلى مجلد الجذر كالمستخدم الجذر

وجدنا ملف root.txt!

اكتشاف ملف root.txt في مجلد الجذر

لقراءة محتوى الملف، استخدمنا الأمر:

cat root.txt

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

صورة خلفية تعبر عن إنجاز الاختراق

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

تُقدم آلة Blocky من Hack The Box درسًا عمليًا قيمًا في أساسيات اختبار الاختراق، وتُبرز بشكل خاص المخاطر الأمنية الناجمة عن سوء إدارة كلمات المرور وكشف الملفات الداخلية الحساسة. لقد تتبعنا مسارًا نموذجيًا للاختراق بدءًا من الاستطلاع الشامل باستخدام أدوات مثل Nmap و Gobuster و Nikto و WPScan، مرورًا باكتشاف بيانات الاعتماد المخزنة بشكل غير آمن داخل ملف Java JAR (BlockyCore.class) باستخدام JD-GUI. هذا السيناريو يؤكد على أهمية التكوين الآمن للتطبيقات وعدم تضمين معلومات حساسة في الكود المصدري أو الملفات القابلة للتنزيل. كما أظهرت العملية كيف يمكن لممارسات كلمات المرور الضعيفة أن تؤدي إلى اختراق قاعدة البيانات (phpMyAdmin) ومن ثم الوصول الأولي للنظام عبر SSH. أخيرًا، كشفت سهولة رفع الامتيازات للمستخدم Notch عن ضعف في إدارة الصلاحيات، حيث كان لديه القدرة على تنفيذ أوامر sudo غير مقيدة، مما سمح بالوصول الكامل إلى الجذر. تُعد هذه الثغرات مجتمعة تذكيرًا قويًا بضرورة اتباع أفضل الممارسات الأمنية في كل طبقات البنية التحتية لتجنب التعرض للاختراق.

اترك تعليقاً

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