api渗透测试
2024-7-10 19:48:50 Author: mp.weixin.qq.com(查看原文) 阅读量:2 收藏

0x00 前言

在昨天阅读国外的文章的时候,翻到了一篇 Microsoft Regional Director DANA的文章,我个人是很喜欢去测试API接口的,比如面试官常问的,“给你个登录框你有什么思路 ”,在很久以前面QAX的时候,有梳理过一个思路,如下:

大多数情况下,特别是最近吧,发现自己漏洞挖掘越来越没有耐心了,所以我觉得应该让测试流程化,而流程化的第一个步骤,我觉得就是梳理站点的API文档。

0x01 API文档梳理

回到Microsoft Regional Director DANA的文章里,DANA详细的教学了为什么要梳理一份API文档(当然源站点自带api-docs最好)以及如何去梳理一份API文档,具体为什么要梳理以及一些Swagger, and the OpenAPI specification原理等,可以去原文看DANA文章 How to craft rogue API docs for a target when they don’t exist,这里只简单记录一下如何操作。

首先需要用到的工具有: mitmproxy2swagger

1
pip install mitmproxy2swagger

使用谷歌浏览器利用开发者工具捕获流量,首先打开F12,设置保留日志与禁用缓存

尽可能的把所有的功能点触发一遍,包括不限于,修改头像、评论、举报等等

生成 HTTP 存档 (HAR)

利用前面提到的工具mitmproxy2swagger将HAR转换为简单的openai规范文档

1
mitmproxy2swagger -i ***.***.com.har -o crapi.yaml -p http://***.***.com -e -f har
  • -i:用谷歌浏览器保存下来的HAR源文件

  • -o:输出要生成的yaml文件

  • -p:调用API的前缀,通常为 target.domain 或 target.domain/v1 等

  • -e:在文档中提供示例数据,这些数据为刚刚我们浏览器捕获的真实数据,如不想泄露或者需要将文档分享给他人,建议不加这个参数

  • -f:这告诉工具输入文件是 HAR 捕获,而不是典型的 mitmproxy文件

文档生成后,在x-path-templates 下有大量以"-ignore:/“开头的行,我们需要打开文件并删除任何看似 API 调用的请求上的"ignore:"。并且忽略/删除图像、图标、HTML、Javascript 等内容,使文档看起来变成如下:

原文档:

修改后:

重新运行一遍相同的命令: mitmproxy2swagger -i ***.***.com.har -o crapi.yaml -p http://***.***.com -e -f har

注意

注意,如出现以下报错,这是因为代码使用了python2的str.decode()方法

File “C:\Python3\lib\runpy.py”, line 196, in _run_module_as_main return _run_code(code, main_globals, None,

File “C:\Python3\lib\runpy.py”, line 86, in _run_code exec(code, run_globals)

File “C:\Python3\Scripts\mitmproxy2swagger.exe_main_.py”, line 7, in

File “C:\Python3\lib\site-packages\mitmproxy2swagger\mitmproxy2swagger.py”, line 265, in main body_val[key.decode(“utf-8”)] = value.decode(“utf-8”)

AttributeError: ‘str’ object has no attribute ‘decode’. Did you mean: ’encode’?

请修改C:\Python3\lib\site-packages\mitmproxy2swagger\mitmproxy2swagger.py文件中的265行即可:

1
body_val[key.encode().decode("utf-8")] = value.encode().decode("utf-8")

重新运行命令后,文档应该就会变成如下的样子,包括端点、使用的方法、对象的参数和属性,如果包含 -e 选项,甚至还包括完整的示例:

将文档复制粘贴到https://editor.swagger.io中就能在 Swagger 编辑器调用测试API了

0x02 API文档与Postman与BurpSuite结合

先将API文档导入到Postman当中CTRL+O快捷键导入yaml文件即可

打开设置

SSL证书验证不勾选

勾除掉系统代理,然后设置burp的代理即可

测试一下burp有没有收到流量

如果你是一个长期主义者,欢迎加入我的知识星球,我们一起往前走,每日都会更新,精细化运营,微信识别二维码付费即可加入,如不满意,72 小时内可在 App 内无条件自助退款
前面有同学问我有没优惠券,这里发放100张100元的优惠券,用完今年不再发放

往期回顾

dom-xss精选文章

年度精选文章

Nuclei权威指南-如何躺赚

漏洞赏金猎人系列-如何测试设置功能IV

漏洞赏金猎人系列-如何测试注册功能以及相关Tips

原文:http://shm1ly726.com/posts/api/

参考: https://danaepp.com/how-to-craft-rogue-api-docs-for-a-target-when-they-dont-exist


文章来源: https://mp.weixin.qq.com/s?__biz=MzIzMTIzNTM0MA==&mid=2247495165&idx=1&sn=40eeca08809ced642217d4c0aa99a138&chksm=e8a5e79edfd26e8878054dbc52cb066127a1a76298723025740c7203f03e46b15dd43960db43&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh