某公司平台系统存在敏感信息泄露漏洞,由于对swagger-ui未做好访问控制措施,导致攻击者可以通过swagger页面获取网站API信息,进而导致攻击者构造payload对系统API进行攻击。
在某次常规渗透测试项目中,有一个IP地址需要测试,访问过去发现是一个XX后台管理系统,根据登录页面的信息判断,是某公司开发的XX管理系统。于是对该系统进行测试,可惜没发现什么可利用的漏洞,于是改变思路,对这个IP进行信息收集。
首先收集端口开放信息,发现其开放了非常多的端口,挨个访问过去,发现每个端口基本都开放了web服务,这是个好消息呀,想着可以通过其它端口获取权限,进而回来渗透目标系统。
当访问到8083端口时,发现是个空白页面,但标题却显示某某平台登录。ctrl+U查看网页源代码,发现许多js文件,其中这一条吸引了我。
这又是api又是env,很难不让人联想到api信息泄露,于是对网站进行目录扫描,存在swagger-ui,看来是springboot集成了swagger-ui,并且没有设置身份验证措施。
于是对这些接口一一进行测试,发现了许多高危问题,例如敏感信息泄露,任意文件上传等。但可惜没有拿到权限,任意文件上传后只能查看,并不能解析,这次项目也就这样草草结束了。
项目结束后的某一天,在回看之前的文档时,又看到了这个系统,突然发现js文件里面写明了网站指纹信息,这个author前面的网址会不会就是开发者的网站呢?
访问过去看看,果然!是一个专门做某系统的公司,那就说明这个系统一定还有很多其它企业在用。
于是去fofa搜一下特征:body="xxx.com",有223条资产信息。
随便点开一个,复现之前的漏洞,首先访问swagger-ui,在这里有一个/xx/xx/xx/all的功能,它提供获取所有文件的功能。
访问这个API,发现泄露了文件系统内所有文件的信息,通过分析json内容,发现里面存储了所有上传的用户身份信息。
这里我们已经获取到所有文件的id级名称等信息,但是没有办法查看内容,于是回到swagger里面继续寻找。
发现一处“根据文件id获取文件信息”的接口,于是调用这个接口。
从刚才泄露的所有文件信息中选择一个id,拼接到这个接口后面,替换掉{fileId}并访问。
可以看到获取了该文件的详细信息,包括文件存储的物理路径、创建时间、文件大小等内容,但这还不能证明泄露的是敏感信息,需要真正看到图片内容才行,于是继续返回寻找可用的API接口。
上面这个api接口,可以直接获取文件缩略图,拼接id后访问,OK了获取到了用户敏感信息(这里就不放图了)。
现在漏洞有了,接下来就是证明它是否为通用型漏洞,CNVD的通用型漏洞要求如下:中危及中危以上的通用性漏洞(CVSS2.0基准评分超过4.0) 软件开发商注册资金大于等于5000万人民币或者涉及党政机关、重要行业单位、科研院所、重要企事业单位(如:中央国有大型企业、部委直属事业单位等)的高危事件型漏洞 通用型漏洞得十个网络案例以上。
首先看一看软件开发商注册资金是否大于5000万,很幸运我找到的这个整好比5000万多一些。接着是需要10个案例,那么就掏出fofa,再找出10个案例就好。刚才查询时有200多个网站存在相同特征,每个都试一下发现基本全都存在这个漏洞,完美~。
写好报告后直接提交至CNVD平台,等着下证书就OK了:)
转载自 freebuf:https://www.freebuf.com/articles/web/391882.html
作者:玄知安全实验室