MySQL File priv to SSRF/RCE

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Dies ist eine Zusammenfassung der MySQL/MariaDB/Percona-Techniken von https://ibreak.software/2020/06/using-sql-injection-to-perform-ssrf-xspa-attacks/.

Serverseitige Anforderungsfälschung (SSRF) über SQL-Funktionen

Bei der Erforschung der SQL Out-of-Band-Datenexfiltration wird häufig die Funktion LOAD_FILE() verwendet, um Netzwerkanfragen 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 wird standardmäßig auf /var/lib/mysql-files/ festgelegt, sofern sie nicht festgelegt ist, wodurch der Dateizugriff auf dieses Verzeichnis beschränkt wird, es sei denn, sie wird auf einen leeren String ("") festgelegt. Diese Anpassung erfordert Änderungen in der Konfigurationsdatei der Datenbank oder den Startparametern.

Wenn secure_file_priv deaktiviert ist ("") und die erforderlichen Datei- und file_priv-Berechtigungen gewährt werden, können Dateien außerhalb des festgelegten Verzeichnisses gelesen werden. Die Fähigkeit dieser Funktionen, Netzwerkanfragen zu stellen, hängt jedoch stark vom Betriebssystem ab. Auf Windows-Systemen sind Netzwerkanfragen an UNC-Pfade aufgrund des Verständnisses des Betriebssystems für UNC-Namenskonventionen möglich, was potenziell zur Exfiltration von NTLMv2-Hashes führen kann.

Diese SSRF-Methode ist auf den TCP-Port 445 beschränkt und erlaubt keine Änderung der Portnummer. Sie kann jedoch verwendet werden, um auf Freigaben mit vollständigen Leseberechtigungen zuzugreifen und, wie in früheren Untersuchungen gezeigt wurde, Hashes zum weiteren Ausnutzen zu stehlen.

Remote Code Execution (RCE) über benutzerdefinierte Funktionen (UDF)

MySQL-Datenbanken bieten die Verwendung von benutzerdefinierten Funktionen (UDF) aus externen Bibliotheksdateien an. Wenn diese Bibliotheken in bestimmten Verzeichnissen oder im $PATH des Systems zugänglich sind, können sie innerhalb von MySQL aufgerufen werden.

Diese Technik ermöglicht die Ausführung von Netzwerk-/HTTP-Anfragen über eine UDF, sofern mehrere Bedingungen erfüllt sind, einschließlich Schreibzugriff auf @@plugin_dir, file_priv auf Y gesetzt ist und secure_file_priv deaktiviert ist.

Beispielsweise kann die Bibliothek lib_mysqludf_sys 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 mit Tools wie SQLMap erleichtert werden, das UDF-Injection unterstützt, und für blinde SQL-Injektionen können Ausgaberedirektion oder DNS-Anforderungsschmuggeltechniken verwendet werden.

Lernen Sie AWS-Hacking von Grund auf mit htARTE (HackTricks AWS Red Team Expert)!

Andere Möglichkeiten, HackTricks zu unterstützen:

Last updated