
Modifizierter PoC für MariaDB v11.1 RCE über UDF, der die Befehlsausgabe inline über SQL-Abfragen zurückgibt. Enthält einen detaillierten Codevergleich und Kompilieranweisungen für Windows.
MariaDB v11.1 RCE über UDF – modifizierter PoC basierend auf Ant1sec-ops/CVE-2024-27766.
| Betroffen | MariaDB v11.1 |
| Behoben in | 10.5.25 / 10.6.18 / 10.11.8 / 11.0.6 / 11.1.5 / 11.2.4 / 11.4.2+ |
| Typ | RCE über benutzerdefinierte Funktion (UDF) |
MariaDB v11.1 erlaubt es einem Angreifer mit ausreichenden Datenbankrechten (FILE-Berechtigung + Schreibzugriff auf das Plugin-Verzeichnis), eine schädliche UDF zu registrieren und darüber beliebige Betriebssystembefehle auszuführen.
Hinweis: Die MariaDB Foundation bestreitet diese CVE mit der Begründung, dass keine Privilegien-Grenze überschritten wird. Für die Ausnutzung sind DB-Zugriff auf Admin-Ebene oder gleichwertige Rechte erforderlich.
Das ursprüngliche PoC verwendet einen Rückgabetyp longlong, sodass do_system() nur zurückgibt, ob der Befehl erfolgreich war – die Ausgabe ist nicht direkt aus SQL ersichtlich.
Diese Version ändert den Rückgabetyp auf char *, wodurch stdout als Abfrageergebnis zurückgegeben wird. Kein Out-of-Band-Kanal nötig; führen Sie einfach SELECT do_system('whoami') aus und die Ausgabe kommt direkt zurück.
| Original | Dieses PoC | |
|---|---|---|
| Rückgabetyp | longlong | char * |
| Ausführung | system() | _popen() + fgets()-Schleife |
| SQL-Ergebnis | Exit-Code | stdout des Befehls |
| Speicher | keine | heap-allokiert, in deinit freigegeben |
Eine Sache ist erwähnenswert: Die Rückgabe von char * aus einer UDF erfordert, dass MariaDB die Puffergröße im Voraus kennt. do_system_init setzt initid->max_length = 65536, passend zum Ausgabepuffer, der in der Hauptfunktion allokiert wird.
Da sich der Rückgabetyp geändert hat, muss bei der Registrierung der Funktion RETURNS STRING verwendet werden – nicht RETURNS INTEGER wie im Original.
CREATE FUNCTION do_system RETURNS STRING SONAME 'do_system.dll';
_popen / _pclose)FILE-Berechtigung und Schreibzugriff auf das Plugin-VerzeichnisNur für Bildungs- und Forschungszwecke. Verwenden Sie es nicht gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben.