前言
Swagger
是一个spring
二开的 RESTful
风格的 Web 服务的开源软件框架,它有一个交互式文档页面,可直接在网页进行发送接口请求测试。
当无需输入密码查看文档时,即存在swagger未授权。
swagger未授权一般是一个低危或者忽略,因此我们需要进一步对接口进行测试。
转发扫描
虽然swagger提供交互式按钮,我们可以直接在网页发送请求包进行测试,但api接口太多,我们会点到手抽筋。
原工具地址:https://github.com/jayus0821/swagger-hack
原工具可以构造接口,于是我们可以将工具的流量转发至扫描工具。
一、修改脚本,添加转发代理选项--proxy
swagger接口地址一般类似如图所示。
用法一:联动burp,设置xray为上游代理。
burp设置上游代理
脚本指定burp端口8080
debug完之后,会生成一个swagger.csv文档,其中记录所有接口信息,可查看响应体是否有敏感信息。
同时,我们的burp history会有所有的接口请求。
200响应码:说明该接口是未授权访问接口,可以进一步测试sqli、越权、url跳转等漏洞。
404响应码:说明该接口没有资源或者我们接口没有调对。
比如如下接口,正确的传参是在url请求行,说明脚本还有点瑕疵。
401响应码:说明接口已鉴权
用法2:直接指定xray、ez等扫描器监听端口
开启xray监听
指定xray监听端口,开扫。
二、修改脚本,剔除delete方法
原工具设置了一些全局变量,在发包的时候作为默认值true 1 0等,如果直接扫描的话,delete方法存在sqli、未授权时可能会有吃牢饭的风险。
修改脚本,将delete方法只做记录,不转发至代理。
api工具转发
上面说的工具实际测试在构造发包时有点小瑕疵,一些接口没有正确构造返回415、404。
我们可以使用专业的接口测试工具,经过我的对比,apifox soapui postman这三款工具中,apifox更好用一点,测试非常方便且有中文。
使用方法:
1、导入swagger文档
2、设置前置url,也就是一级目录。
3、设置转发代理为burp监听端口
4、自动化测试所有接口
新建自动化测试
导入swagger接口
点击运行,会生成测试结果。
同时,我们的上游burp也会有流量。
总结
1、swagger未授权进一步测试,主要找出未鉴权的接口后进行进一步的漏洞探测。
2、前文转发扫描工具,可关注公众号回复swagger-modify。
原文始发于微信公众号(rainy的安全小屋):swagger未授权进阶
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论