Python Internal Read Gadgets
Reading time: 3 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.
Basic Information
Διαφορετικές ευπάθειες όπως οι Python Format Strings ή Class Pollution μπορεί να σας επιτρέψουν να διαβάσετε εσωτερικά δεδομένα της python αλλά δεν θα σας επιτρέψουν να εκτελέσετε κώδικα. Επομένως, ένας pentester θα χρειαστεί να εκμεταλλευτεί αυτές τις άδειες ανάγνωσης για να αποκτήσει ευαίσθητα προνόμια και να κλιμακώσει την ευπάθεια.
Flask - Read secret key
Η κύρια σελίδα μιας εφαρμογής Flask θα έχει πιθανώς το app
παγκόσμιο αντικείμενο όπου αυτή η μυστική ρύθμιση είναι διαμορφωμένη.
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
Σε αυτή την περίπτωση, είναι δυνατόν να αποκτήσετε πρόσβαση σε αυτό το αντικείμενο απλά χρησιμοποιώντας οποιοδήποτε gadget για να αποκτήσετε πρόσβαση σε παγκόσμια αντικείμενα από τη σελίδα Bypass Python sandboxes.
Στην περίπτωση όπου η ευπάθεια είναι σε διαφορετικό αρχείο python, χρειάζεστε ένα gadget για να διασχίσετε τα αρχεία ώστε να φτάσετε στο κύριο για να αποκτήσετε πρόσβαση στο παγκόσμιο αντικείμενο app.secret_key
για να αλλάξετε το μυστικό κλειδί του Flask και να μπορείτε να κλιμακώσετε προνόμια γνωρίζοντας αυτό το κλειδί.
Ένα payload όπως αυτό από αυτή την αναφορά:
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
Χρησιμοποιήστε αυτό το payload για να αλλάξετε το app.secret_key
(το όνομα στην εφαρμογή σας μπορεί να είναι διαφορετικό) ώστε να μπορείτε να υπογράφετε νέα και πιο προνομιακά cookies flask.
Werkzeug - machine_id και node uuid
Χρησιμοποιώντας αυτά τα payload από αυτή τη γραφή θα μπορείτε να αποκτήσετε πρόσβαση στο machine_id και το uuid node, τα οποία είναι τα κύρια μυστικά που χρειάζεστε για να δημιουργήσετε το Werkzeug pin που μπορείτε να χρησιμοποιήσετε για να αποκτήσετε πρόσβαση στην κονσόλα python στο /console
αν είναι ενεργοποιημένη η λειτουργία αποσφαλμάτωσης:
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}
warning
Σημειώστε ότι μπορείτε να αποκτήσετε το τοπικό μονοπάτι του διακομιστή για το app.py
δημιουργώντας κάποιο σφάλμα στη σελίδα web που θα σας δώσει το μονοπάτι.
Αν η ευπάθεια είναι σε διαφορετικό αρχείο python, ελέγξτε το προηγούμενο κόλπο Flask για να αποκτήσετε πρόσβαση στα αντικείμενα από το κύριο αρχείο python.
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.