一次失败的定点漏洞挖掘之代码审计宜信Davinci
0x00: 基本目标
目标:xxx.target.com
目标漏洞:sql注入,rce,任意文件读取等
基础信息:
可以注册
可以登录
系统为:宜信开源系统davinci (https://github.com/edp963/davinci)
版本:0.3.0-beta.9 release
0x01 可能存在的问题
基本逻辑问题
1,创建计划任务处可以获取其他用户的用户名和邮箱
关注的重点逻辑问题:
1,设法越权进入他人的项目(盗取信息)
2,设法越权获取他人的sources 信息 (没有越权)
3,设法越权修改用户密(没有找回密码功能)
可能可以突破的点:
1,看代码目标可以上传文件,解析xlxs,使用了poi 3.9 ,可能存在xxe,但好像上传不了xlsx,需要继续测试
2,source 功能中可以填写远程mysql 地址,联想可以用mysql 客户端任意文件读取,后续分析:但是目标用的是mysql connector 5.x 不在影响版本内。(mysql-connector-java 6.0.3-8.0.15)
3,因为填写的是jdbc,联想jdbc 反序列化。后续分析:利用urldns 虽然成功了,已知的gadget没有可利用的,唯一可利用的spring-tx 也因为缺少javax.transaction-api jar包 而断送了唯一的希望。需要从给出的jar包中挖一条新的gadget
0x02 深入研究:
1,xlsx的xxe 继续研究看看
2,从已知的jar包中挖一条新的gadget
3,系统源代码继续审计
后续经过仔细研究,xxe确实可以(有个地方传参理解错了),xxe获取到的java版本为1.8.0_144,难怪我用 jre8u20的 gadget打不了,而且xxe只能oob,读多几个 / 就歇菜了
xxe 的利用只能用来盲打内网了,内网IP为10.52.9.11
gadget太菜了,挖不到。
0x03 总结
总的来说就一个可能可以rce的点,链子待挖掘