Pentesting JDWP - Java Debug Wire Protocol

Support HackTricks

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:

./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

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.

  1. 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.

  1. 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).

  1. 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.

  1. 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.

  1. 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).

  1. 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:

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.

Supporta HackTricks

Last updated