Pentesting JDWP - Java Debug Wire Protocol
Last updated
Last updated
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Ottieni la prospettiva di un hacker sulle tue app web, rete e cloud
Trova e segnala vulnerabilità critiche ed exploitabili con un reale impatto sul business. Usa i nostri oltre 20 strumenti personalizzati per mappare la superficie di attacco, trovare problemi di sicurezza che ti permettano di elevare i privilegi e utilizzare exploit automatizzati per raccogliere prove essenziali, trasformando il tuo duro lavoro in report persuasivi.
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.
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 variano 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.
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
Ottieni la prospettiva di un hacker sulle tue app web, rete e cloud
Trova e segnala vulnerabilità critiche e sfruttabili con un reale impatto sul business. Usa i nostri oltre 20 strumenti personalizzati per mappare la superficie di attacco, trovare problemi di sicurezza che ti consentono di elevare i privilegi e utilizzare exploit automatizzati per raccogliere prove essenziali, trasformando il tuo duro lavoro in report persuasivi.
Impara e pratica Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Impara e pratica Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)