Saltar al contenido
OPS // KITitspentest.sh

X-GAD

GadgetProbe

Extensión de Burp y librería Java que huella qué clases hay en el classpath remoto vía deserialización ciega, antes de lanzar una cadena de gadgets completa.

Sitio oficialVolver al catálogo

RESUMEN

GadgetProbe (github.com/BishopFox/GadgetProbe), desarrollado por the-bumble de Bishop Fox, resuelve la frustración que describe su propio README: encontraste un bug de deserialización Java, le lanzaste todos los payloads de ysoserial y no pasó nada — ¿no era explotable, o simplemente faltaba la librería correcta? Lo responde generando objetos serializados que referencian un nombre de clase específico y disparan un callback DNS (a Burp Collaborator o tu propio nameserver) solo si esa clase existe en el classpath remoto, sin necesitar que la cadena de gadgets completa de esa clase realmente se ejecute.

Ejecutado desde Burp Intruder contra una wordlist de nombres de clase, o desde su modo librería/CLI de Java para sondeos scripteados, convierte '¿está presente una versión concreta de Commons Collections o Jackson?' en una respuesta sí/no por clase, permitiendo elegir la librería, la cadena de gadgets y el generador de payload — ver ysoserial y phpggc, también en este sitio — con más probabilidad de funcionar antes de gastar más peticiones a prueba y error.

CASOS DE USO

Casos de uso en un engagement

  • 01

    Huellar con exactitud qué librerías de serialización (Commons Collections, Jackson, Groovy, etc.) hay en un classpath Java remoto.

  • 02

    Acotar qué cadena de gadgets de ysoserial o phpggc vale la pena probar después de encontrar un sink de deserialización sin que ningún payload haya funcionado aún.

  • 03

    Confirmar que un sink de deserialización sospechado es real cuando payloads de RCE directos son bloqueados por un WAF o fallan en silencio.

  • 04

    Construir una huella de versiones de las dependencias del objetivo para el informe, incluso cuando el RCE completo no es alcanzable.

PRIMEROS PASOS

Tras encontrar un punto de deserialización Java, antes de lanzarle a ciegas cada cadena de gadgets de ysoserial, para confirmar qué librerías están realmente presentes.

  1. Confirma que el objetivo deserializa entrada controlada por el atacante y que un listener de callback DNS (Burp Collaborator o tu propio dominio) es alcanzable desde ahí.
  2. Descarga el release de la extensión de Burp de GadgetProbe o compílala desde el código con Gradle.
  3. Envía la petición vulnerable a Intruder y marca el parámetro, luego carga una wordlist de nombres de clase como conjunto de payloads.
  4. Añade el payload processor de GadgetProbe, más los procesadores de codificación que el sink necesite, y lanza el ataque.
  5. Revisa qué nombres de clase dispararon un callback en la pestaña de GadgetProbe, y elige una cadena de gadgets acorde.

ANTES DE USARLA

Qué revisar antes de lanzarla

Confirma la presencia de una clase, no su explotabilidad — una clase coincidente puede seguir siendo inalcanzable por cualquier cadena de gadgets conocida, o estar parcheada contra la técnica específica.

Los callbacks DNS pasan por Burp Collaborator o un nameserver que controles; trata esa infraestructura y sus logs como evidencia del engagement, no como tooling desechable.

Wordlists de nombres de clase grandes ejecutadas con Intruder generan muchas peticiones — confirma que el objetivo soporta ese volumen antes de correrlo contra producción.

SIGUE EXPLORANDO

Ver toda la fase →