Werkzeug / Flask Debug
Άμεση διαθέσιμη ρύθμιση για αξιολόγηση ευπαθειών & pentesting. Εκτελέστε μια πλήρη pentest από οπουδήποτε με 20+ εργαλεία & δυνατότητες που κυμαίνονται από αναγνώριση έως αναφορά. Δεν αντικαθιστούμε τους pentesters - αναπτύσσουμε προσαρμοσμένα εργαλεία, μονάδες ανίχνευσης & εκμετάλλευσης για να τους δώσουμε πίσω λίγο χρόνο για να εμβαθύνουν, να ανοίξουν shells και να διασκεδάσουν.
Console RCE
Εάν είναι ενεργοποιημένη η αποσφαλμάτωση, μπορείτε να προσπαθήσετε να αποκτήσετε πρόσβαση στο /console
και να αποκτήσετε RCE.
Υπάρχουν επίσης αρκετά exploits στο διαδίκτυο όπως αυτό ή ένα στο metasploit.
Pin Protected - Path Traversal
Σε ορισμένες περιπτώσεις, το /console
endpoint θα είναι προστατευμένο με ένα pin. Αν έχετε μια ευπάθεια διαδρομής αρχείου, μπορείτε να διαρρεύσετε όλες τις απαραίτητες πληροφορίες για να δημιουργήσετε αυτό το pin.
Werkzeug Console PIN Exploit
Επιβάλετε μια σελίδα σφάλματος debug στην εφαρμογή για να δείτε αυτό:
Ένα μήνυμα σχετικά με το σενάριο "κλειδωμένη κονσόλα" συναντάται όταν προσπαθείτε να αποκτήσετε πρόσβαση στη διεπαφή αποσφαλμάτωσης του Werkzeug, υποδεικνύοντας την απαίτηση για έναν κωδικό PIN για να ξεκλειδώσετε την κονσόλα. Προτείνεται να εκμεταλλευτείτε τον κωδικό PIN της κονσόλας αναλύοντας τον αλγόριθμο δημιουργίας PIN στο αρχείο αρχικοποίησης αποσφαλμάτωσης του Werkzeug (__init__.py
). Μηχανισμός δημιουργίας PIN μπορεί να μελετηθεί από το Werkzeug source code repository, αν και συνιστάται να αποκτήσετε τον πραγματικό κωδικό του διακομιστή μέσω μιας ευπάθειας διαδρομής αρχείου λόγω πιθανών διαφορών εκδόσεων.
Για να εκμεταλλευτείτε τον κωδικό PIN της κονσόλας, απαιτούνται δύο σύνολα μεταβλητών, probably_public_bits
και private_bits
:
probably_public_bits
probably_public_bits
username
: Αναφέρεται στον χρήστη που ξεκίνησε τη συνεδρία Flask.modname
: Συνήθως ορίζεται ωςflask.app
.getattr(app, '__name__', getattr(app.__class__, '__name__'))
: Γενικά επιλύεται σε Flask.getattr(mod, '__file__', None)
: Αντιπροσωπεύει την πλήρη διαδρομή προς τοapp.py
εντός του καταλόγου Flask (π.χ.,/usr/local/lib/python3.5/dist-packages/flask/app.py
). Αν τοapp.py
δεν είναι εφαρμόσιμο, δοκιμάστε τοapp.pyc
.
private_bits
private_bits
uuid.getnode()
: Ανακτά τη διεύθυνση MAC της τρέχουσας μηχανής, με τοstr(uuid.getnode())
να την μετατρέπει σε δεκαδική μορφή.Για να προσδιορίσετε τη διεύθυνση MAC του διακομιστή, πρέπει να εντοπίσετε τη δραστήρια δικτυακή διεπαφή που χρησιμοποιείται από την εφαρμογή (π.χ.,
ens3
). Σε περιπτώσεις αβεβαιότητας, διαρρεύστε το/proc/net/arp
για να βρείτε το ID της συσκευής, στη συνέχεια εξάγετε τη διεύθυνση MAC από/sys/class/net/<device id>/address
.Η μετατροπή μιας δεκαεξαδικής διεύθυνσης MAC σε δεκαδική μπορεί να πραγματοποιηθεί όπως φαίνεται παρακάτω:
get_machine_id()
: Συνδυάζει δεδομένα από το/etc/machine-id
ή το/proc/sys/kernel/random/boot_id
με την πρώτη γραμμή του/proc/self/cgroup
μετά την τελευταία κάθετο (/
).
Last updated