mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
30 lines
3.1 KiB
Markdown
30 lines
3.1 KiB
Markdown
# MySQL File priv to SSRF/RCE
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|
|
|
|
**Questo è un riepilogo delle tecniche MySQL/MariaDB/Percona da [https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/](https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/)**.
|
|
|
|
### Server-Side Request Forgery (SSRF) tramite Funzioni SQL
|
|
|
|
Nell'esplorazione dell'exfiltrazione di dati SQL Out of Band, la funzione `LOAD_FILE()` è comunemente utilizzata per avviare richieste di rete. Tuttavia, questa funzione è limitata dal sistema operativo su cui opera e dalle configurazioni di avvio del database.
|
|
|
|
La variabile globale `secure_file_priv`, se non impostata, predefinisce a `/var/lib/mysql-files/`, limitando l'accesso ai file a questa directory a meno che non sia impostata su una stringa vuota (`""`). Questa modifica richiede modifiche nel file di configurazione del database o nei parametri di avvio.
|
|
|
|
Dato che `secure_file_priv` è disabilitato (`""`), e assumendo che i permessi necessari per i file e `file_priv` siano concessi, i file al di fuori della directory designata possono essere letti. Tuttavia, la capacità di queste funzioni di effettuare chiamate di rete dipende fortemente dal sistema operativo. Nei sistemi Windows, le chiamate di rete a percorsi UNC sono fattibili grazie alla comprensione delle convenzioni di denominazione UNC da parte del sistema operativo, portando potenzialmente all'exfiltrazione di hash NTLMv2.
|
|
|
|
Questo metodo SSRF è limitato alla porta TCP 445 e non consente la modifica del numero di porta, sebbene possa essere utilizzato per accedere a condivisioni con pieni privilegi di lettura e, come dimostrato in ricerche precedenti, per rubare hash per ulteriori sfruttamenti.
|
|
|
|
### Esecuzione Remota di Codice (RCE) tramite Funzioni Definite dall'Utente (UDF)
|
|
|
|
I database MySQL offrono l'uso di Funzioni Definite dall'Utente (UDF) da file di libreria esterni. Se queste librerie sono accessibili all'interno di directory specifiche o nel `$PATH` del sistema, possono essere invocate da MySQL.
|
|
|
|
Questa tecnica consente l'esecuzione di richieste di rete/HTTP tramite un UDF, a condizione che siano soddisfatte diverse condizioni, tra cui l'accesso in scrittura a `@@plugin_dir`, `file_priv` impostato su `Y` e `secure_file_priv` disabilitato.
|
|
|
|
Ad esempio, la libreria `lib_mysqludf_sys` o altre librerie UDF che abilitano richieste HTTP possono essere caricate per eseguire SSRF. Le librerie devono essere trasferite al server, il che può essere realizzato attraverso la codifica esadecimale o base64 del contenuto della libreria e poi scrivendolo nella directory appropriata.
|
|
|
|
Il processo varia se `@@plugin_dir` non è scrivibile, specialmente per le versioni di MySQL superiori a `v5.0.67`. In tali casi, devono essere utilizzati percorsi alternativi che siano scrivibili.
|
|
|
|
L'automazione di questi processi può essere facilitata da strumenti come SQLMap, che supporta l'iniezione UDF, e per iniezioni SQL cieche, possono essere utilizzate tecniche di reindirizzamento dell'output o di smuggling delle richieste DNS.
|
|
|
|
{{#include ../../../banners/hacktricks-training.md}}
|