Pentesting JDWP - Java Debug Wire Protocol
Εκμετάλλευση
Η εκμετάλλευση του JDWP βασίζεται στην έλλειψη πιστοποίησης και κρυπτογράφησης του πρωτοκόλλου. Συνήθως βρίσκεται στη θύρα 8000, αλλά είναι δυνατή η χρήση και άλλων θυρών. Η αρχική σύνδεση γίνεται αποστέλλοντας ένα "JDWP-Handshake" στη θύρα προορισμού. Εάν ένα JDWP service είναι ενεργό, απαντά με τον ίδιο συμβολοσειριακό χαρακτήρα, επιβεβαιώνοντας την παρουσία του. Αυτή η αναγνώριση λειτουργεί ως μέθοδος αποτύπωσης για την εντοπισμό των υπηρεσιών JDWP στο δίκτυο.
Όσον αφορά τον εντοπισμό διεργασιών, η αναζήτηση της συμβολοσειράς "jdwk" σε διεργασίες Java μπορεί να υποδείξει μια ενεργή συνεδρία JDWP.
Το εργαλείο που χρησιμοποιείται είναι το jdwp-shellifier. Μπορείτε να το χρησιμοποιήσετε με διάφορες παραμέτρους:
Ανακάλυψα ότι η χρήση της επιλογής --break-on 'java.lang.String.indexOf'
καθιστά την εκμετάλλευση πιο σταθερή. Και αν έχετε τη δυνατότητα να ανεβάσετε ένα backdoor στον κεντρικό υπολογιστή και να το εκτελέσετε αντί να εκτελέσετε μια εντολή, η εκμετάλλευση θα είναι ακόμα πιο σταθερή.
Περισσότερες λεπτομέρειες
Αυτό είναι ένα σύνοψη του https://ioactive.com/hacking-java-debug-wire-protocol-or-how/. Ελέγξτε το για περαιτέρω λεπτομέρειες.
Επισκόπηση JDWP:
Είναι ένα πρωτόκολλο δικτύου βασισμένο σε πακέτα, κυρίως συγχρονισμένο.
Δεν διαθέτει πιστοποίηση και κρυπτογράφηση, καθιστώντας το ευάλωτο όταν εκτίθεται σε εχθρικά δίκτυα.
Χειραψία JDWP:
Χρησιμοποιείται ένα απλό διαδικαστικό χειραψίας για την έναρξη της επικοινωνίας. Ανταλλάσσεται μια συμβολοσειρά ASCII 14 χαρακτήρων "JDWP-Handshake" μεταξύ του Debugger (πελάτη) και του Debuggee (διακομιστή).
Επικοινωνία JDWP:
Τα μηνύματα έχουν μια απλή δομή με πεδία όπως Μήκος, Αναγνωριστικό, Σημαία και ΣύνολοΕντολών.
Οι τιμές του ΣυνόλουΕντολών κυμαίνονται από 0x40 έως 0x80, αντιπροσωπεύοντας διάφορες ενέργειες και γεγονότα.
Εκμετάλλευση:
Το JDWP επιτρέπει τη φόρτωση και την κλήση αυθαίρετων κλάσεων και bytecode, δημιουργώντας κινδύνους για την ασφάλεια.
Το άρθρο περιγράφει μια διαδικασία εκμετάλλευσης σε πέντε βήματα, που περιλαμβάνει την ανάκτηση αναφορών της Java Runtime, την ορισμό σημείων διακοπής και την κλήση μεθόδων.
Εκμετάλλευση στην πραγματική ζωή:
Παρά τις πιθανές προστασίες του τείχους προστασίας, οι υπηρεσίες JDWP είναι ανακαλύψιμες και εκμεταλλεύσιμες σε πραγματικά σενάρια, όπως αποδεικνύουν αναζητήσεις σε πλατφόρμες όπως το ShodanHQ και το GitHub.
Το σενάριο εκμετάλλευσης δοκιμάστηκε σε διάφορες εκδόσεις του JDK και είναι ανεξάρτητο από την πλατφόρμα, προσφέροντας αξιόπιστη εκτέλεση κώδικα απομακρυσμένα (RCE).
Ασφαλείς Επιπτώσεις:
Η παρουσία ανοιχτών υπηρεσιών JDWP στο διαδίκτυο υπογραμμίζει την ανάγκη για τακτικές αναθεωρήσεις ασφαλείας, απενεργοποίησης λειτουργιών αποσφαλμάτωσης σε παραγωγή και κατάλληλων ρυθμίσεων τείχους προστασίας.
Αναφορές:
http://www.secdev.org/projects/scapy(no longer active)
http://www.hsc-news.com/archives/2013/000109.html (no longer active)
https://github.com/search?q=-Xdebug+-Xrunjdwp&type=Code&ref=searchresults
Last updated