首页 > 其他分享 >swagger接口未授权怎么玩?

swagger接口未授权怎么玩?

时间:2023-12-28 14:24:48浏览次数:37  
标签:版本 接口 API 测试 网安 授权 swagger

今天来分享下我是如何自动提取 swagger 中配置的 API 接口的,在此之前,先来了解下 swagger 是什么?下面是 chatgpt 的回答:

1.png

总结起来就是一套方便开发人员设计、构建 API 的框架,国内外应用非常广泛,大家在日常信息收集的时候经常会遇到这样的系统,比如通过谷歌语法可以轻松找到:

2.png

还可以使用网络空间搜索引擎,比如 fofa:

3.png

足以看出使用量是非常广泛来,当然,还有很多是隐藏在网站目录中的,需要通过目录枚举来发现这类系统。随便打开一个看看这个系统长什么样:

4.png

上图是配置的一些 API 接口信息,点击其中任意一个接口,会有该 API 详细的信息,比如:

5.png

手工测试时,可以根据接口的描述,进行针对性的测试,即方便了开发人员,如果存在未授权访问的情况下也方便的攻击者,而我们作为白帽子,这种系统可以扩展我们测试范围,从而发现更多问题。

所以对于企业而言,这种系统,可以设置访问权限,仅限相关开发人员访问,或者将其设置内网访问,尽量不要将其映射至外网,从而降低这类信息比恶意利用的风险。

今天的主要目的是如何通过编写脚本自动化提取其中的接口,从而实现自动化测试,适用于大量目标的测试。

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

通过查看网站访问的数据包,可以发现所有接口信息是通过 api 返回数据,再通过前端的 javascript 进行格式化成方便操作的页面,所以我们只需要找到那个返回数据的接口,进行分析提取即可,如图:

6.png

上面的案例是 openapi 的 3.0 版本,下面是 swagger 2.0 版本:

7.png

经过分析,发现,不同版本的格式有略微的差别,所以在做自动化分析的时候,需要根据不同版本做相应的处理。

从上面的案例同样可以看出,返回接口数据的接口不太一样,第一个是 swagger.json,第二个是 swagger-docs,所以在收集这类数据接口的时候,需要指定常见接口名称和路径的字典,从而发现更多可以返回 API 数据的接口。

下面分别以这两个版本的接口作为案例,解析其中的 API,然后在参数部分添加默认值,输出 API 接口列表,从而应用在其他漏洞扫描器中进行漏洞探测。

1、基于 openapi 3.0 版本,提取接口列表

核心其实就是写一个函数将接口数据中的参数增加默认值后输出即可,一个完整的接口配置如图:

8.png

其中 statusCode 是路径中的参数,可以将默认值设为 1,get 表示该接口是通过 GET 方法请求,parameters 就是需要配置的接口参数,name 就是参数的名称,schema 就是参数的类型是数字,我们在自动提取的时候,可以根据参数的类型设置默认值,也可以直接都设置成数字,根据自己的需要来。

简单写了一个解析函数,输出的结果如图:

9.png

2、基于 swagger 2.0 版本,提取接口列表

方法其实大同小异,只是格式不同而已,解析出的格式如图:

10.png

关于参考脚本可以前往【渗透测试那些事儿】知识星球获取,由于代码并不成熟,所以就不公开分享了,互联网上也有同类型的脚本可以参考:

https://github.com/jayus0821/swagger-hack

在实现解析单个脚本的能力之后,那么就是如何收集更多类似接口,这里推荐 nuclei 的 POC 模板,也可以根据自己的经验进行添加:

https://github.com/projectdiscovery/nuclei-templates/blob/e6c20a24de75a63b3ce01fd25925aef4604cd34c/http/exposures/apis/swagger-api.yaml#L47

11.png

比如我们刚才测试的目标:

12.png

第一个目标测试出了一个 js 文件,第二个没有测试出来,说明这个 POC 中配置的字典并不全面,这种情况,自己可以将未收录的路径添加到 POC 中,从而扩展工具的能力。

转载自:信安之路  作者:myh0st

更多网安技能的在线实操练习,请点击这里>>

  

标签:版本,接口,API,测试,网安,授权,swagger
From: https://www.cnblogs.com/hetianlab/p/17932613.html

相关文章

  • c#语法JWT请求接口
    NuGet下载System.IdentityModel.Tokens.Jwt包下面是获取token,需要引用对应的jwtusingSystem.IdentityModel.Tokens.Jwt;usingMicrosoft.IdentityModel.Tokens;privatevoidbutton1_Click(objectsender,EventArgse){stringsecretId="a1bc3900b......
  • Handler接口
    typeHandlerinterface{ServeHTTP(ResponseWriter,*Request)}处理http请求的接口---相当于Java的Controller方法配合http包下的方法使用funcListenAndServe(addrstring,handlerHandler)error{server:=&Server{Addr:addr,Handler:handler}retu......
  • FX110网:西班牙对两家未经授权的外汇交易商发出警告
    2023年12月26日,西班牙国家证券市场委员会(西班牙语:ComisiónNacionaldelMercadodeValores),即CNMV,警告了2家未经授权的外汇交易商。根据《证券市场法》第17条第二款(由10月23日第4/2015号皇家法令批准的重订文本),西班牙国家证券市场委员会(ComisiónNacionaldelMercadodeVal......
  • Lombok,Swagger,Jackson中的注解汇总
    Lombok相关(通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法):#maven添加依赖或下载jar包:<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.20</version>......
  • Jmeter —— 接口之间关联调用(获取上一个接口的返回值作为下一个接口的请求参数)
    正则表达式:具体如何操作:1.草稿保存,此请求的响应数据的id为发布总结的请求参数draft_id2.草稿保存的响应数据3.在草稿保存的请求中,添加后置处理器-正则表达式提取器,提取响应数据的id信息4.发布总结请求中,填写请求参数5.最终,可正常发布最后如果你想学习软件测......
  • 05 读写I2C接口EEPROM实验
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!1概述我们知道I2C总线具备广泛的用途,比如寄存器的配置,EEPROM的使用,更重要的是I2C总线上可以挂载非常多的外......
  • 06 读写I2C接口的RTC时钟芯片
    软件版本:VIVADO2021.1操作系统:WIN1064bit硬件平台:适用XILINXA7/K7/Z7/ZU/KU系列FPGA登录米联客(MiLianKe)FPGA社区-www.uisrc.com观看免费视频课程、在线答疑解惑!1概述本节课继续利用I2C总线控制器实现对RTC时钟芯片,DS1337的读写访问,进一步验证我们设计的i2c控制器的可靠......
  • Swagger Editor 实操指南:打造优质 API 文档
    在API开发的领域中,Swagger以其卓越的使用效率与便捷性,备受开发者欢迎。它是一个强大的接口设计工具,允许开发人员对 RESTfulAPI 进行高效的设计、构建及测试工作。本文旨在深入探讨其中一个子工具——SwaggerEditor的使用介绍及它的有点。SwaggerEditor是一个基于开源的在......
  • 微信小程序实现语音转文字接口,提供中文普通话转文字服务。
    进行录音initRecorderManager(){//微信自带语音初始化this.data.recorderManager=wx.getRecorderManager();//监听录音开始事件this.data.recorderManager.onStart(()=>{console.log('录音开始');});//监听录音暂停事件......
  • EasyCVR接口调用编辑通道详细步骤
    近期有用户反馈,由于是初次使用EasyCVR,不知道如何调用接口。其实对于新用户,我们配备了十分详细的用户手册,但为了用户更好地进行操作,可以参照小编以下步骤进行学习。1)首先添加设备接口:2)随后添加通道接口:3)最后编辑通道接口:......