记一次曲折的EDU漏洞挖掘
1.挖掘思路
1 | /xx1-server/下actuator端点泄露--heapdump转储文件获取用户名密码-js中发现xx2和xx3路径中actuator端点泄露-尝试RCE(失败)-swagger-ui信息泄露-编写poc(批量) |
2./xx1-server/下actuator端点泄露
对某edu进行了一波信息收集,发现某系统下调用了/xx1-server/的服务
尝试访问此路径,发现springboot信息
尝试访问actuator,发现包括heapdump以及jolokia诸多端点泄露
先下载heapdump文件查看
第一个heapdump利用工具无结果:
第二个heapdump利用工具通过搜索关键字username和password找到用户名密码:
还有内网数据库链接信息以及一个类似学号的用户名:
heapdump泄露的用户名密码较复杂,此系统还有一个平台可以登陆,尝试登陆提示失败
3.js中发现xx2和xx3下actuator端点泄露
/xx2-server/无法访问,但是/xx3-server/可以访问,提示401
尝试使用/xx1-server/中heapdump泄露的用户名密码进行登陆,登陆成功,同样存在heapdump
尝试下载打开,发现没有什么有价值的东西
4.尝试RCE(失败,原因太菜)
actuator下还存在jolokia以及jolokia/list,尝试jolokia Realm JNDI RCE
RCE以失败告终,接收到了目标请求,但是没有反应,高版本的JDK也试(env获取到的目标是jdk1.8),均失败,(github中的py脚本是get型的,在这里是登陆认证之后的,需要简单修改一下脚本,携带着header中的Authorization进行POST请求发包)。至于为什么不成功,可能””态势感知””或者”waf”知道
5.事件型到”通用型”
继续查看xxx.js文件,发现一行被注释的URL,指向的是另外一个学校的/xx3-server/,尝试利用title关键字进行搜索:
结果不是很多,尝试用js文件搜索,这次结果还可以
发现均存在xxx.js文件,并且xxx.js文件中基本都发现路径xx1-server、xx2-server以及xx3-server,有的可能只有xx1和xx2路径,尝试访问xx1,不需要密码,xx2同样无法访问,访问到xx3-server的时候,同样出现401,第一个学校中xx1-server下heapdump中获取到的用户名密码登陆到了第一个学校的/xx3-server/,再加上貌似是个通用型的服务,假如是通用型用户名密码,尝试用户名密码登陆第二个学校的/xx3-server/,登陆成功,验证了第一个猜想。
spring常见的还有swagger-ui以及v2/api-docs,尝试访问,均存在(后面会尝试通过接口获取敏感信息):
尝试访问其它学校,看看是不是同样的可以用户名密码登陆
是这样的,第三个学校同样xx1-server直接访问,但是actuator下无特殊端点泄露,xx2-server无法访问,xx3-server提示401登陆验证,使用泄露的用户名密码尝试登陆,登陆成功,存在swagger-ui以及v2/api-docs
尝试访问第四个学校,xxx.js同样存在,但是多了一个/xx4-server/路径,同样xx1-server直接访问,但是actuator下无特殊端点泄露,xx2-server无法访问,xx3-server提示401登陆验证,使用泄露的用户名密码尝试登陆,登陆成功,存在swagger-ui以及v2/api-docs,尝试访问/xx4-server/,actuator下无特殊端点泄露。
第五个学校同样如此
6.swagger-ui信息泄露
在swagger-ui列出的接口信息中,发现用户管理接口
貌似没用到token什么的进行鉴权,尝试访问可获取到用户敏感信息
用同样的方法访问其余站点,试了几个之后均存在敏感信息泄露
编写afrog https://github.com/zan8in/afrog 的通用POC,批量刷一下:
首先服务地址是在xxx.js文件中泄露的,先判断是否存在xxx.js,若不存在就跳过,其次是假如开启登陆认证的话,请求头会要求Authorization,内容是第一次heapdump泄露的username:password进行base64编码后的结果
结果如下:(并未进行敏感操作)
然后可以判断一下actuator端点存在多少,有61个结果,去重之后除去非edu的大概也有几十个吧,包括swagger-ui可以访问的也有不少:
打包提交: