Pentesting JDWP - Java Debug Wire Protocol
Sfruttare
Lo sfruttamento di JDWP si basa sulla mancanza di autenticazione e crittografia del protocollo. Di solito si trova sulla porta 8000, ma sono possibili altre porte. La connessione iniziale avviene inviando un "JDWP-Handshake" alla porta di destinazione. Se un servizio JDWP è attivo, risponderà con la stessa stringa, confermando la sua presenza. Questa handshake funge da metodo di fingerprinting per identificare i servizi JDWP nella rete.
Per quanto riguarda l'identificazione dei processi, la ricerca della 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'utilizzo 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.
Ulteriori dettagli
Questo è un riassunto di https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Consultalo per ulteriori dettagli.
Panoramica di JDWP:
È un protocollo binario di rete basato su pacchetti, principalmente sincrono.
Mancanza di autenticazione e crittografia, rendendolo vulnerabile quando esposto a reti ostili.
Handshake di JDWP:
Viene utilizzato un semplice processo di handshake per avviare la comunicazione. Viene scambiata una stringa ASCII di 14 caratteri "JDWP-Handshake" tra il Debugger (client) e il Debuggee (server).
Comunicazione di 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 il caricamento e l'invocazione di classi e bytecode arbitrari, comportando rischi per la sicurezza.
L'articolo descrive un processo di sfruttamento in cinque fasi, che coinvolge il recupero di riferimenti di runtime di Java, impostazione di punti di interruzione e invocazione di metodi.
Sfruttamento nella vita reale:
Nonostante le potenziali protezioni del firewall, i servizi JDWP sono individuabili e sfruttabili in scenari reali, come dimostrato da ricerche su piattaforme come ShodanHQ e GitHub.
Lo script di exploit è stato testato su varie versioni di JDK ed è indipendente dalla piattaforma, offrendo un'esecuzione remota affidabile del codice (RCE).
Implicazioni per la sicurezza:
La presenza di servizi JDWP aperti su Internet sottolinea la necessità di revisioni di sicurezza regolari, disabilitazione delle funzionalità di debug in produzione e configurazioni corrette del firewall.
Riferimenti:
http://www.secdev.org/projects/scapy(non più attivo)
http://www.hsc-news.com/archives/2013/000109.html (non più attivo)
https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
Last updated