Python Internal Read Gadgets

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

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:

__init__.__globals__.__loader__.__init__.__globals__.sys.modules.__main__.app.secret_key

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}

Nota che puoi ottenere il percorso locale del server per app.py generando qualche errore nella pagina web che ti fornirà il percorso.

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:

Last updated