MySQL File priv to SSRF/RCE
Last updated
Last updated
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Dies ist eine Zusammenfassung der MySQL/MariaDB/Percona-Techniken von https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.
Bei der Erkundung der SQL Out of Band-Datenexfiltration wird die LOAD_FILE()
-Funktion häufig verwendet, um Netzwerkrequests zu initiieren. Diese Funktion ist jedoch durch das Betriebssystem, auf dem sie ausgeführt wird, und die Startkonfigurationen der Datenbank eingeschränkt.
Die globale Variable secure_file_priv
, wenn sie nicht gesetzt ist, hat standardmäßig den Wert /var/lib/mysql-files/
, was den Dateizugriff auf dieses Verzeichnis beschränkt, es sei denn, sie wird auf einen leeren String (""
) gesetzt. Diese Anpassung erfordert Änderungen in der Konfigurationsdatei der Datenbank oder in den Startparametern.
Wenn secure_file_priv
deaktiviert ist (""
), und vorausgesetzt, die erforderlichen Datei- und file_priv
-Berechtigungen sind erteilt, können Dateien außerhalb des vorgesehenen Verzeichnisses gelesen werden. Dennoch hängt die Fähigkeit dieser Funktionen, Netzwerkaufrufe zu tätigen, stark vom Betriebssystem ab. Auf Windows-Systemen sind Netzwerkaufrufe zu UNC-Pfaden möglich, da das Betriebssystem die UNC-Namenskonventionen versteht, was potenziell zur Exfiltration von NTLMv2-Hashes führen kann.
Diese SSRF-Methode ist auf TCP-Port 445 beschränkt und erlaubt keine Änderung der Portnummer, kann jedoch verwendet werden, um Freigaben mit vollständigen Leserechten zuzugreifen und, wie in früheren Forschungen gezeigt, um Hashes für weitere Ausbeutung zu stehlen.
MySQL-Datenbanken bieten die Verwendung von benutzerdefinierten Funktionen (UDF) aus externen Bibliotheksdateien. Wenn diese Bibliotheken in bestimmten Verzeichnissen oder im $PATH
des Systems zugänglich sind, können sie von innerhalb von MySQL aufgerufen werden.
Diese Technik ermöglicht die Ausführung von Netzwerk-/HTTP-Anfragen über eine UDF, vorausgesetzt, mehrere Bedingungen sind erfüllt, einschließlich Schreibzugriff auf das @@plugin_dir
, file_priv
auf Y
gesetzt und secure_file_priv
deaktiviert.
Zum Beispiel kann die lib_mysqludf_sys
-Bibliothek oder andere UDF-Bibliotheken, die HTTP-Anfragen ermöglichen, geladen werden, um SSRF durchzuführen. Die Bibliotheken müssen auf den Server übertragen werden, was durch Hex- oder Base64-Codierung des Inhalts der Bibliothek und anschließendes Schreiben in das entsprechende Verzeichnis erreicht werden kann.
Der Prozess variiert, wenn das @@plugin_dir
nicht beschreibbar ist, insbesondere für MySQL-Versionen über v5.0.67
. In solchen Fällen müssen alternative beschreibbare Pfade verwendet werden.
Die Automatisierung dieser Prozesse kann durch Tools wie SQLMap erleichtert werden, die UDF-Injektion unterstützen, und für blinde SQL-Injektionen können Techniken zur Ausgabeumleitung oder DNS-Anforderungs-Schmuggel verwendet werden.
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)