Swagger接口安全测试

admin 2024年2月21日00:11:04评论14 views字数 1883阅读6分16秒阅读模式

基本介绍

Swagger是一种用于描述、构建和使用RESTful API的开源框架,它提供了一套工具和规范,帮助开发者设计、文档化和测试API以及生成客户端代码和服务器存根,Swagger的核心组件是OpenAPI规范(以前称为Swagger规范),它是一个用于定义和描述API的规范,OpenAPI规范使用JSON或YAML格式,包括API的路径、参数、响应、错误处理等信息,它提供了一种标准的方式来描述API的结构和行为

版本介绍

Swagger是一个持续发展的项目,经历了以下几个主要版本的演变:

  • Swagger 1.0:Swagger最初的版本,它提供了一种基本的API描述语言和工具集,用于定义和文档化RESTful API,Swagger 1.0使用JSON格式的规范并提供了一些基本的注解和工具来生成API文档

  • Swagger 2.0:Swagger 2.0引入了一些重要的改进和扩展,它是Swagger项目的一个重要里程碑,最显著的变化是引入了OpenAPI规范的概念(当时称为Swagger规范),它提供了一种更强大、更灵活的方式来定义和描述API,Swagger 2.0支持JSON和YAML两种格式的规范并提供了更多的注解和工具来生成API文档、客户端代码和服务器存根

  • OpenAPI 3.0:为了进一步推进API描述的标准化,Swagger项目在Swagger 2.0之后演化为OpenAPI规范,OpenAPI 3.0是一个独立的规范,它与Swagger 2.0兼容但引入了一些重要的改进和新功能,OpenAPI 3.0支持更多的数据类型、响应内容协商、请求体和响应的内容协商、安全定义等,它还引入了组件的概念,用于更好地组织和重用规范中的各个部分

  • Swagger UI:Swagger UI是一个用于可视化展示和测试API文档的工具,它可以根据Swagger或OpenAPI规范自动生成一个交互式的API文档界面,让开发者可以方便地浏览API的路径、参数、响应等信息并进行API调试和测试

应用界面

Swagger系统大致如下所示:

Swagger接口安全测试

点击查看接口时会给出接口的调用示例,包括参数、可能出现的回显状态等

Swagger接口安全测试

Swagger接口安全测试

版本鉴别

我们在访问swagger的时候可以留意一下swagger的接口文件信息,其中可以鉴别当前的swagger的版本类别,下面的版本为swagger 2.0版本:

Swagger接口安全测试

下面的版本为openapi 3.0

Swagger接口安全测试

安全评估

未授权类

Swagger文件给出了系统的完整的接口列表信息,包含接口路径、参数信息、回显状态情况等,渗透测试人员可以根据接口构造请求数据报文对接口的安全测试,例如:接口的未授权访问等,所以对于企业而言Swagger文件无疑是一个资产暴露点,对于此类系统建议设置访问权限,仅限于测试阶段供测试人员进行测试使用,或者将其调至内网访问,不建议映射到外网去,从而降低这类信息比恶意利用的风险

Swagger接口安全测试

自动化类

在针对上面的接口测试时我们有一个很头疼的点就是需要挨个去手动测试一遍所有的swagger接口,这是一个非常耗时的工作量,所以我们思考的是如何对其实现自动化的安全评估,初步的流程如下:

  • 获取接口文件

  • 接口导入工具

  • 工具发包测试

接口文件

接口文件的获取我们一般可以直接通过访问Swagger页面获取到,例如:

Swagger接口安全测试

Swagger接口安全测试

接口导入

这里我们选择postman接口测试工具(https://www.postman.com/downloads/)

Swagger接口安全测试

注册账户(kerber0s1/kerber0s@123)

Swagger接口安全测试

完成登录之后进入到主界面并导入文件

Swagger接口安全测试

然后执行导入操作:

Swagger接口安全测试

随后我们可以在API界面看到完整的API接口列表:

Swagger接口安全测试

环境设置

初始状态下我们导入工具后baseUrl是一个空值:

Swagger接口安全测试

此时我们需要设置全局的环境变量:

Swagger接口安全测试

填写如下信息设置变量名为test,其值设置为"http://49.75.27.150:8020/swagger/"

Swagger接口安全测试

随后选择刚刚设置的环境"test"

Swagger接口安全测试

随后我们在项目当中即可看到baseUrl被替换

Swagger接口安全测试

自动化类

随后我们设置一个代理

Swagger接口安全测试

发送请求后在burpsuite中收到请求记录,说明代理成功

Swagger接口安全测试

随后我们直接运行

Swagger接口安全测试

随后在burpsuite中收到请求记录:

Swagger接口安全测试

此时我们可以接入Xray进行漏洞的挖掘,在burpsuite中再进行一层代理将请求代理到Xray中去

Swagger接口安全测试

然后在xray中开启监听开始自动化对所有api接口进行扫描

Swagger接口安全测试

防御措施

禁止将Swagger接口外置到外网环境中

文末小结

本篇文章我们主要介绍了Swagger接口的基本概念、发展历史、未授权访问的检测方式、自动化安全测试的方法、安全防御措施等

原文始发于微信公众号(七芒星实验室):Swagger接口安全测试

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年2月21日00:11:04
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Swagger接口安全测试http://cn-sec.com/archives/2509638.html

发表评论

匿名网友 填写信息