Pentesting JDWP - Java Debug Wire Protocol
Setup immediatamente disponibile per la valutazione delle vulnerabilità e il penetration testing. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla reportistica. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento e sfruttamento per restituire loro del tempo per approfondire, aprire shell e divertirsi.
Sfruttamento
Lo sfruttamento di JDWP si basa sulla mancanza di autenticazione e crittografia del protocollo. Si trova generalmente sulla porta 8000, ma sono possibili altre porte. La connessione iniziale viene effettuata inviando un "JDWP-Handshake" alla porta di destinazione. Se un servizio JDWP è attivo, risponde con la stessa stringa, confermando la sua presenza. Questo handshake funge da metodo di fingerprinting per identificare i servizi JDWP sulla rete.
In termini di identificazione del processo, cercare la stringa "jdwk" nei processi Java può indicare una sessione JDWP attiva.
Lo strumento principale è jdwp-shellifier. Puoi usarlo con diversi parametri:
Ho scoperto che l'uso di --break-on 'java.lang.String.indexOf'
rende l'exploit più stabile. E se hai la possibilità di caricare un backdoor sull'host ed eseguirlo invece di eseguire un comando, l'exploit sarà ancora più stabile.
Maggiori dettagli
Questo è un riassunto di https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Controllalo per ulteriori dettagli.
Panoramica di JDWP:
È un protocollo binario di rete basato su pacchetti, principalmente sincrono.
Manca di autenticazione e crittografia, rendendolo vulnerabile quando esposto a reti ostili.
Handshake JDWP:
Viene utilizzato un semplice processo di handshake per avviare la comunicazione. Una stringa ASCII di 14 caratteri “JDWP-Handshake” viene scambiata tra il Debugger (client) e il Debuggee (server).
Comunicazione JDWP:
I messaggi hanno una struttura semplice con campi come Lunghezza, Id, Flag e CommandSet.
I valori di CommandSet vanno da 0x40 a 0x80, rappresentando diverse azioni ed eventi.
Sfruttamento:
JDWP consente di caricare e invocare classi e bytecode arbitrari, ponendo rischi per la sicurezza.
L'articolo dettaglia un processo di sfruttamento in cinque passaggi, che coinvolgono il recupero dei riferimenti Java Runtime, l'impostazione di breakpoint e l'invocazione di metodi.
Sfruttamento nella vita reale:
Nonostante le potenziali protezioni del firewall, i servizi JDWP sono scopribili e sfruttabili in scenari reali, come dimostrato da ricerche su piattaforme come ShodanHQ e GitHub.
Lo script di exploit è stato testato contro varie versioni di JDK ed è indipendente dalla piattaforma, offrendo un'affidabile Esecuzione Remota di Codice (RCE).
Implicazioni per la sicurezza:
La presenza di servizi JDWP aperti su Internet sottolinea la necessità di revisioni di sicurezza regolari, disabilitando le funzionalità di debug in produzione e configurazioni adeguate del firewall.
Riferimenti:
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
Setup immediatamente disponibile per la valutazione delle vulnerabilità e il pentesting. Esegui un pentest completo da qualsiasi luogo con oltre 20 strumenti e funzionalità che vanno dalla ricognizione alla reportistica. Non sostituiamo i pentester - sviluppiamo strumenti personalizzati, moduli di rilevamento e sfruttamento per restituire loro del tempo per approfondire, aprire shell e divertirsi.
Last updated