前阵子项目上想通过测试工具在网页上模拟返回错误代码 500 来查看页面的错误处理,然后去调查了下 burp suite,看了些基本工具的使用文档。虽然最后证实 burp suite 只能用来处理页面测试应用程序的实际行为和响应,而不是尝试模拟不存在的问题或错误,但还是有所收获,也想和大家分享一下这几个 burp suite 社区版提供的基本工具。
Burp?Suite 是一款安全测试工具,具有拦截、代理、扫描、攻击、测试等多种功能,可以对 Web 应用程序进行安全评估、漏洞扫描和渗透测试。Burp Suite 分为社区版、专业版还有企业版。社区版只有最基础的手动安全测试工具(Inspector, Repeater, Sequencer, Comparer),并且不能保存项目文件;专业版可以保存,具有完整的 burp 工具箱,可以自定义攻击,扫描漏洞,设置自动化安全测试等;企业版可以自动进行动态扫描,将扫描集成到 CI/CD 平台等。
1. 安装
Burp?Suite?社区版直接在官网下载软件,打开即用。但是打开后只有 Temporary Project,每次项目文件无法保存。
2. Proxy
Burp Porxy 可以拦截并记录 Burp Browser 和目标服务器之间发送的 Websocket 通信/HTTP 请求和响应。
点击 Open browser 后,会自动启动一个 Chromium 浏览器,就是上面提到的 Burp Browser。官方文档建议将 Burp Suite 和 Burp Browser 调整到你可以同时看到两个窗口以便于后续操作。
在 Intercept is off 的情况下,Burp Browser 只会记录浏览器的历史。当打开 Intercept 时,每一个 http 请求都会被拦截下来,多次点击 Forward,发送被拦截的请求,以及任何后续的请求,直到该页面在 Burp 的浏览器中加载。因为开启 Intercept 后执行的每个 HTTP 请求都需要点击 Forward 才可以继续,所以最好是先不开启 Intercept,执行到自己需要的步骤前一到两步,再打开。
这个拦截步骤也是后续使用 Burp Suite 工具的一个前提。
可以看到在拦截下的请求中,有个 Action 的选项,展开后,可以将当前拦截下的请求发送到几个基础工具中,下面来一一介绍。
1. Inspector
Inspector 能够快速查看和编辑 HTTP 和 WebSocket 消息的特征。
如上图所示,http 请求被拦截下时,右边有个 Inspector 的区域。一共有 Request Attributes, Request Query Parameters, Request Body Parameters, Request Cookies, Request Headers 五个部分,可以展开查看每个部分的内容,也可以手动更改内容值。例如 Request Attributes 中可以选择使用 HTTP/1 或 HTTP/2 协议,或者更改 HTTP Method 等。其他部分也可以直接对参数值进行修改,修改后直接 Apply changes,应用成功后的修改会变成橙色的,然后点击 Forward 观察页面变化。
2. Repeater
Burp Repeater 能够修改并反复发送一个 HTTP 或 WebSocket 消息。
在拦截到请求时点击 Action -> Send to Repeater, 拦截的请求会被发送到 Repeater 中(可以发送多个请求到 Repeater 中)。在 Repeater 里,可以任意修改请求内容,并且查看对应的响应。
而且,在请求或响应中选择的对应文本,会直接显示在 Inspector 中,伴随显示解码后的文本,解码类型有四种 URL encoding, HTML encoding, Base 64, Base 64 URL。
3. Sequencer
Sequencer 用来生成随机数和伪随机数,可以帮助分析分析 token 样本中的随机性质量。token 可以是 Session tokens, Anti-CSRF tokens, Password reset tokens 等旨在保持不可预测性的令牌。
将包含会话信息的请求转发到 Sequencer 中,Token Location Within Response 会自动识别 token,也可以自己选择想要分析的 token;Live Capture Options 可以控制线程数量和请求的限制速率等。设置好上述两个部分,就可以点击 Start live capture 来分析对应的 token 了。
Burp Suite 会产生另一个页面来分析 token 的指标,有效熵、可靠性等,还有字符级别和位级别的分析。不点击 stop,样本量会无限增长,可以在 Auto analyze 旁边的 next 知道这一阶段的目标样本量。
4. Comparer
Comparer 可以比较识别出请求或响应之间的微妙差异,也可以比较任何两个数据项。
拦截请求后发送给 Comparer,请求会自动复制到 Comparer 的列表上,在上下两个部分分别选择两个不同的选项,并在右下角选择比较单词还是字节。
弹出的弹窗里会自动进行左右两边的对比,像 diff 一样将右边与左边对比修改,删除和增加的各项。
拦截请求只能将请求进行对比,如果想对比响应的话,需要自己复制粘贴到列表中,选择后也可以进行对比。
5. Intruder
Intruder 是一个用于对网络应用程序进行自动化定制攻击的工具。能够配置攻击参数,反复发送相同的 HTTP 请求,根据不同的攻击方式,每次在预定义的位置插入不同的 payload 发送请求。
将请求发送到 Intruder 后,可以选择攻击类型以及要攻击的参数。
然后在 Payloads 的页面中配置要使用的攻击负载类型,添加常见的攻击负载(社区版只能手动添加,专业版可以直接上传文件)。
然后点击 start attack 开始发送请求攻击,并弹出一个对应的响应列表,供使用者查看。
上述五种工具是 Burp Suite 的几个基本工具,使用方法较为简单,但是在做安全测试时测试的角度和测试数据之类的还是需要一定的积累。之前也接触过另一个安全测试工具 OWASP ZAP,使用过类似Repeater 的工具,相比较起来,Burp Suite 的界面更容易上手,更加简单一点,只是社区版功能太少,很多功能只能手动操作。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!