4.8 KiB
Gadget di Lettura Interna di Python
{% hint style="success" %}
Impara e pratica l'Hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)
Sostieni HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud repos di github.
Informazioni di Base
Diverse vulnerabilità come Stringhe di Formato Python o Inquinamento di Classe potrebbero permetterti di leggere dati interni di Python ma non eseguire codice. Pertanto, un pentester dovrà sfruttare al massimo queste autorizzazioni di lettura per ottenere privilegi sensibili ed escalare la vulnerabilità.
Flask - Leggere 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 per arrivare a quello principale e accedere all'oggetto globale app.secret_key
per cambiare la chiave segreta di Flask e poter così aumentare i privilegi conoscendo questa chiave.
Un payload come questo da questo articolo:
{% 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 cookie flask con nuovi e più privilegi.
Werkzeug - machine_id e node uuid
Utilizzando questi payload da questo articolo sarai in grado di accedere al machine_id e al nodo uuid, 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à 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 dei server per il file 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.
{% hint style="success" %}
Impara e pratica l'Hacking su AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking su GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR a HackTricks e HackTricks Cloud repos di Github.