Pentesting JDWP - Java Debug Wire Protocol
Eksploatacija
Eksploatacija JDWP-a se oslanja na nedostatak autentifikacije i enkripcije protokola. Obično se nalazi na portu 8000, ali mogući su i drugi portovi. Inicijalna veza se uspostavlja slanjem "JDWP-Handshake" na ciljni port. Ako je JDWP servis aktivan, odgovara istim stringom, potvrđujući svoje prisustvo. Ovaj handshake se koristi kao metoda za identifikaciju JDWP servisa u mreži.
Što se tiče identifikacije procesa, pretraga stringa "jdwk" u Java procesima može ukazivati na aktivnu JDWP sesiju.
Preporučeni alat je jdwp-shellifier. Možete ga koristiti sa različitim parametrima:
Pronašao sam da korišćenje --break-on 'java.lang.String.indexOf'
čini eksploataciju više stabilnom. Ako imate mogućnost da otpremite zadnja vrata na host i izvršite ih 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/. Pogledajte ga za dalje detalje.
JDWP pregled:
To je mrežni binarni protokol zasnovan na paketima, uglavnom sinhroni.
Nedostatak autentifikacije i enkripcije čini ga ranjivim kada je izložen neprijateljskim mrežama.
JDWP rukovanje:
Koristi se jednostavan proces rukovanja za pokretanje komunikacije. Između debagera (klijenta) i debugera (servera) razmenjuje se ASCII niska od 14 karaktera "JDWP-Handshake".
JDWP komunikacija:
Poruke imaju jednostavnu strukturu sa poljima kao što su Dužina, Id, Zastava i SkupKomandi.
Vrednosti SkupKomandi se kreću od 0x40 do 0x80, predstavljajući različite akcije i događaje.
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 dobijanje referenci Java Runtime-a, postavljanje prekidača i pozivanje metoda.
Eksploatacija u stvarnom životu:
Uprkos potencijalnoj zaštiti od firewall-a, JDWP usluge su otkrivene i eksploatisane u stvarnim scenarijima, kao što je prikazano pretragama na platformama poput ShodanHQ i GitHub-a.
Skripta za eksploataciju je testirana na različitim verzijama JDK-a i nezavisna je od platforme, pružajući pouzdanu izvršnu kontrolu na daljinu (RCE).
Sigurnosne implikacije:
Prisustvo otvorenih JDWP usluga na internetu naglašava potrebu za redovnim sigurnosnim pregledima, onemogućavanjem debug funkcionalnosti u produkciji i pravilnom konfiguracijom firewall-a.
Reference:
http://www.secdev.org/projects/scapy(no longer active)
http://www.hsc-news.com/archives/2013/000109.html (no longer active)
https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
Last updated