Swagger是一种用于描述、构建和使用RESTful API的开源框架,它提供了一套工具和规范,帮助开发者设计、文档化和测试API以及生成客户端代码和服务器存根,Swagger的核心组件是OpenAPI规范(以前称为Swagger规范),它是一个用于定义和描述API的规范,OpenAPI规范使用JSON或YAML格式,包括API的路径、参数、响应、错误处理等信息,它提供了一种标准的方式来描述API的结构和行为
Swagger是一个持续发展的项目,经历了以下几个主要版本的演变:
Swagger系统大致如下所示:
点击查看接口时会给出接口的调用示例,包括参数、可能出现的回显状态等
我们在访问swagger的时候可以留意一下swagger的接口文件信息,其中可以鉴别当前的swagger的版本类别,下面的版本为swagger 2.0版本:
下面的版本为openapi 3.0
Swagger文件给出了系统的完整的接口列表信息,包含接口路径、参数信息、回显状态情况等,渗透测试人员可以根据接口构造请求数据报文对接口的安全测试,例如:接口的未授权访问等,所以对于企业而言Swagger文件无疑是一个资产暴露点,对于此类系统建议设置访问权限,仅限于测试阶段供测试人员进行测试使用,或者将其调至内网访问,不建议映射到外网去,从而降低这类信息比恶意利用的风险
在针对上面的接口测试时我们有一个很头疼的点就是需要挨个去手动测试一遍所有的swagger接口,这是一个非常耗时的工作量,所以我们思考的是如何对其实现自动化的安全评估,初步的流程如下:
接口文件的获取我们一般可以直接通过访问Swagger页面获取到,例如:
这里我们选择postman接口测试工具(https://www.postman.com/downloads/)
注册账户123)
完成登录之后进入到主界面并导入文件
然后执行导入操作:
随后我们可以在API界面看到完整的API接口列表:
初始状态下我们导入工具后baseUrl是一个空值:
此时我们需要设置全局的环境变量:
填写如下信息设置变量名为test,其值设置为"http://49.75.27.150:8020/swagger/"
随后选择刚刚设置的环境"test"
随后我们在项目当中即可看到baseUrl被替换
随后我们设置一个代理
发送请求后在burpsuite中收到请求记录,说明代理成功
随后我们直接运行
随后在burpsuite中收到请求记录:
此时我们可以接入Xray进行漏洞的挖掘,在burpsuite中再进行一层代理将请求代理到Xray中去
然后在xray中开启监听开始自动化对所有api接口进行扫描
禁止将Swagger接口外置到外网环境中
本篇文章我们主要介绍了Swagger接口的基本概念、发展历史、未授权访问的检测方式、自动化安全测试的方法、安全防御措施等