如何使用 burpsuite 测试休息 api?

Posted

技术标签:

【中文标题】如何使用 burpsuite 测试休息 api?【英文标题】:How to pentest rest apis using burpsuite? 【发布时间】:2021-11-16 14:30:34 【问题描述】:

我想对rest api进行渗透测试,我的用例是连接到服务器的客户端(带有用户名和密码的桌面应用程序)。所以我很困惑从哪里开始以及如何配置burp。平时我用burp来渗透测试网站,配置起来比较简单,你只在浏览器中设置代理和拦截,但现在用例不同了。 另外,我在google上搜索了一下,发现postman被多次提及,我知道它是一个构建api的工具,但它也用于打嗝的渗透测试?

【问题讨论】:

【参考方案1】:

首先确认应用程序正在通过 HTTP/HTTPS 进行通信以确保 Burp 是正确使用的工具,这可能很有用。

如果您已经拥有 Postman 文档,Postman 仅对渗透测试有用。听起来好像不是这样,所以我不会担心。

假设桌面应用确实使用 HTTP,您需要做两件事:

    更改系统级代理设置以指向 Burp (127.0.0.1:8080) 安装并信任 Burp CA 证书(可在本地从 http://burp:8080 获得)。

在某些情况下,您可能需要在 Burp 中启用“隐形代理”。

根据客户端的类型,起初这可能并不总是有效,但如果客户端支持代理,您应该会在 Burp 窗口中看到流量。请注意您在 Burp 中的 Dashboard,如果您看到 TLS 警告,这可能表明客户端使用了证书固定,并且可能需要在客户端进行一些逆向工程。

【讨论】:

如果通信不在 http/https 中怎么办?如何或使用什么工具,比如打嗝? @anonymous 我会仔细查看Wireshark 的流量,它有许多解析器来检测已知协议。从那里开始,您必须根据具体情况决定如何拦截和修改该流量。至少在 Windows 上,有像 Echo Mirage 这样的工具可以连接到常见的 Windows 网络功能,允许您进行原始的 Burp 式流量检查。【参考方案2】:

如你所知,burp,拦截一个http/s协议网络,它不是拦截网络流量的工具。所以为了实现你的目标,你可以使用wireshark或其他东西,来寻找一个软件rest api端点。 之后,您可以像以前一样使用 burp 开始渗透测试。

那么如何在wireshark中找到rest api端点? 您可以使用此模式过滤网络结果:

tcp.port==443

【讨论】:

以上是关于如何使用 burpsuite 测试休息 api?的主要内容,如果未能解决你的问题,请参考以下文章

Django 测试休息框架:APIRequestFactory vs APIClient

如何模拟公共 API(第三方 API)以生成 spring restdocs

Spring Boot在测试时嘲笑其他休息客户端

我如何在 grails 2.3.1 中使用控制器来休息 api?

使用burpsuit捕获手机流量

安全测试工具BurpSuite