Pentesting JDWP - Java Debug Wire Protocol

Reading time: 5 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Exploitation

L'exploitation de JDWP repose sur le manque d'authentification et de chiffrement du protocole. Il se trouve gĂ©nĂ©ralement sur le port 8000, mais d'autres ports sont possibles. La connexion initiale se fait en envoyant un "JDWP-Handshake" au port cible. Si un service JDWP est actif, il rĂ©pond avec la mĂȘme chaĂźne, confirmant sa prĂ©sence. Cette poignĂ©e de main sert de mĂ©thode de fingerprinting pour identifier les services JDWP sur le rĂ©seau.

En termes d'identification de processus, rechercher la chaĂźne "jdwk" dans les processus Java peut indiquer une session JDWP active.

L'outil de référence est jdwp-shellifier. Vous pouvez l'utiliser avec différents paramÚtres :

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

J'ai constaté que l'utilisation de --break-on 'java.lang.String.indexOf' rend l'exploit plus stable. Et si vous avez la chance de télécharger un backdoor sur l'hÎte et de l'exécuter au lieu d'exécuter une commande, l'exploit sera encore plus stable.

Plus de détails

Ceci est un résumé de https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Consultez-le pour plus de détails.

  1. Aperçu de JDWP :
  • C'est un protocole binaire rĂ©seau basĂ© sur des paquets, principalement synchrone.
  • Manque d'authentification et de cryptage, le rendant vulnĂ©rable lorsqu'il est exposĂ© Ă  des rĂ©seaux hostiles.
  1. Handshake JDWP :
  • Un processus de handshake simple est utilisĂ© pour initier la communication. Une chaĂźne ASCII de 14 caractĂšres “JDWP-Handshake” est Ă©changĂ©e entre le DĂ©bogueur (client) et le DĂ©boguĂ© (serveur).
  1. Communication JDWP :
  • Les messages ont une structure simple avec des champs comme Longueur, Id, Drapeau et CommandSet.
  • Les valeurs de CommandSet varient de 0x40 Ă  0x80, reprĂ©sentant diffĂ©rentes actions et Ă©vĂ©nements.
  1. Exploitation :
  • JDWP permet de charger et d'invoquer des classes et du bytecode arbitraires, posant des risques de sĂ©curitĂ©.
  • L'article dĂ©taille un processus d'exploitation en cinq Ă©tapes, impliquant la rĂ©cupĂ©ration des rĂ©fĂ©rences Java Runtime, la dĂ©finition de points d'arrĂȘt et l'invocation de mĂ©thodes.
  1. Exploitation dans la vie réelle :
  • MalgrĂ© les protections potentielles des pare-feu, les services JDWP sont dĂ©couvrables et exploitables dans des scĂ©narios rĂ©els, comme le dĂ©montrent les recherches sur des plateformes comme ShodanHQ et GitHub.
  • Le script d'exploitation a Ă©tĂ© testĂ© contre diverses versions de JDK et est indĂ©pendant de la plateforme, offrant une exĂ©cution de code Ă  distance (RCE) fiable.
  1. Implications de sécurité :
  • La prĂ©sence de services JDWP ouverts sur Internet souligne la nĂ©cessitĂ© de rĂ©visions de sĂ©curitĂ© rĂ©guliĂšres, de dĂ©sactiver les fonctionnalitĂ©s de dĂ©bogage en production et de configurations appropriĂ©es des pare-feu.

Références :

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks