4.9 KiB
Gadget per la lettura interna di Python
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF Controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi i tuoi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud github repos.
Informazioni di base
Diverse vulnerabilità come Python Format Strings o Class Pollution potrebbero consentirti di leggere i dati interni di Python ma non eseguire il codice. Pertanto, un pentester dovrà sfruttare al massimo queste autorizzazioni di lettura per ottenere privilegi sensibili ed elevare la vulnerabilità.
Flask - Leggi la chiave segreta
La pagina principale di un'applicazione Flask probabilmente avrà l'oggetto globale app
dove questa chiave segreta è configurata.
app = Flask(__name__, template_folder='templates')
app.secret_key = '(:secret:)'
In questo caso è possibile accedere a questo oggetto utilizzando qualsiasi gadget per accedere agli oggetti globali dalla pagina Bypass Python sandboxes.
Nel caso in cui la vulnerabilità si trovi in un file Python diverso, è necessario un gadget per attraversare i file e raggiungere quello principale per accedere all'oggetto globale app.secret_key
e cambiare la chiave segreta di Flask, così da poter aumentare i privilegi conoscendo questa chiave.
Un payload come questo da questo writeup:
{% code overflow="wrap" %}
__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key
{% endcode %}
Utilizza questo payload per cambiare app.secret_key
(il nome nella tua app potrebbe essere diverso) per poter firmare nuovi e più privilegiati cookie flask.
Werkzeug - machine_id e node uuid
Utilizzando questi payload da questo writeup sarai in grado di accedere al machine_id e all'uuid del nodo, che sono i segnreti principali di cui hai bisogno per generare il pin Werkzeug che puoi utilizzare per accedere alla console python in /console
se la modalità di debug è abilitata:
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug]._machine_id}
{ua.__class__.__init__.__globals__[t].sys.modules[werkzeug.debug].uuid._node}
{% hint style="warning" %}
Nota che puoi ottenere il percorso locale del server per app.py
generando qualche errore nella pagina web che ti fornirà il percorso.
{% endhint %}
Se la vulnerabilità si trova in un file Python diverso, controlla il trucco Flask precedente per accedere agli oggetti dal file Python principale.
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata in HackTricks o scaricare HackTricks in PDF, controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di esclusive NFT
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi i tuoi trucchi di hacking inviando PR ai repository GitHub di HackTricks e HackTricks Cloud.