MySQL File priv to SSRF/RCE

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

Altri modi per supportare HackTricks:

Questo è un riassunto delle tecniche MySQL/MariaDB/Percona da https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.

Server-Side Request Forgery (SSRF) tramite Funzioni SQL

Nell'esplorazione dell'esfiltrazione dei dati SQL Out of Band, la funzione LOAD_FILE() viene 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, predefinita a /var/lib/mysql-files/, limita l'accesso ai file a questa directory a meno che non venga 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 supponendo che siano stati concessi i permessi necessari per i file e file_priv, è possibile leggere file al di fuori della directory designata. Tuttavia, la capacità di queste funzioni di effettuare chiamate di rete dipende molto dal sistema operativo. Nei sistemi Windows, le chiamate di rete ai percorsi UNC sono fattibili grazie alla comprensione del sistema operativo delle convenzioni di denominazione UNC, potenzialmente portando all'esfiltrazione di hash NTLMv2.

Questo metodo SSRF è limitato alla porta TCP 445 e non consente la modifica del numero di porta, anche se può essere utilizzato per accedere a condivisioni con privilegi di lettura completi e, come dimostrato in ricerche precedenti, per rubare hash per ulteriori sfruttamenti.

Esecuzione di codice remoto (RCE) tramite Funzioni Definite dall'Utente (UDF)

I database MySQL offrono l'uso di Funzioni Definite dall'Utente (UDF) da file di librerie esterne. Se queste librerie sono accessibili all'interno di directory specifiche o nel $PATH di sistema, possono essere invocate all'interno di MySQL.

Questa tecnica consente l'esecuzione di richieste di rete/HTTP tramite una 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 consentono richieste HTTP possono essere caricate per eseguire SSRF. Le librerie devono essere trasferite al server, il che può essere ottenuto tramite la codifica esadecimale o base64 dei contenuti della libreria e quindi la scrittura 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 di UDF, e per le iniezioni SQL cieche, possono essere utilizzate tecniche di reindirizzamento dell'output o di contrabbando delle richieste DNS.

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

Altri modi per supportare HackTricks:

Last updated