目录
本篇文章会教你如何使用 Burp Repeater 重放特定请求。
挖掘漏洞时,重放请求可以帮助我们研究用户输入不同参数时对目标网站的影响。
重放请求时,我们也不需要每次都靠点击页面拦截请求实现。
重放请求也使得 Burp Scanner 扫描漏洞变得更加简单,有关 Burp Scanner 我们会在后面的课程中详解。
添加请求到 Burp Repeater
Burp Repeater 通常从 burpsuite 的其他组件里加载请求报文。
比如我们可以从 Burp Proxy 的 HTTP 历史记录里发送请求给 Burp Repeater。
选择请求记录
继续上一篇文章,我们打开 burp 官网提供的购物网站当作漏洞靶场。
每次访问产品页面时,浏览器都会发送一个 HTTP 协议的 GET /product 请求,并带有查询参数 productId 。
为进一步研究请求过程,我们可以把它发送到 Burp Repeater 里面进行重放
添加请求到 Burp Repeater
如下图所示,右键点击 GET /product?productId=[…] 请求记录,并选择 Send to Repeater。
也可以直接用快捷键 Ctrl + R 发送给 Repeater。
然后切换到 Repeater 标签查看是否有刚才新添加的请求报文页
发送请求并观察响应
点击 Send 按钮并查看服务器的响应。
可以多次发送,重放该请求,每次服务器都会返回新的响应。
Burp Repeater 发送不同的请求参数
渗透用 Burp Suite 进行手动测试时会经常把同一个请求,修改成不同的参数值后发送。
通过这种方式可以发现很多基于用户输入导致的漏洞。
修改参数后重新发送
修改 productId 参数值并重新发送请求。
修改参数值可以用一些任意数字,包括一些较大的数字,比如把 productId 值修改为 100。
查看请求历史
如下图所示,点击 < 和 > 箭头可以切换请求历史记录,查看发送过的请求和响应内容。
每个箭头旁边的下拉菜单还能列出所有请求记录,点击后直接跳转到指定的请求记录。
为进一步研究请求参数值变化对服务器响应的影响,有时需要把请求内容和响应结果跟上一次的记录做比对
所以 Burp Repeater 能够快速调出之前的请求和响应结果就非常方便有效
对比之前的请求和响应结果,会发现输入不同的产品参数 productId 能返回不同产品的详情页面。
但是如果产品 ID 不存在,服务器就会返回 Not Found。
到这一步我们已经知道了这个页面的响应规律,然后试着用 Burp Repeater 发送不规范的输入看看会发生什么。
发送不规范输入
从业务逻辑上分析,服务器应该希望收到的 productId 参数是一个整数值。
如果我们发送不同的数据类型会发生什么呢?
把 productId 值修改成字符串 test 然后发送
查看响应
如下图所示,productId 值修改成字符串发送后会导致服务器异常。
而且服务器响应里还有详细的堆栈跟踪信息
从服务器响应里可以看出网站使用的是 Apache Struts 框架,甚至暴露了具体版本。
在现实情况中,组件版本信息可能对攻击者非常有用,特别是在组件版本有公开声明的漏洞的情况下。
回到靶场页面,点击页面顶部的 Submit solutions 按钮提交解决方案
然后输入响应里发现的 Apache Struts 版本号 (2 2.3.31)
点击确定,如果页面有如下提示,就代表提交的漏洞信息有效
到此为止,你已经能用 Burp Repeater 对网站的进行最简单的渗透测试了,还成功发现了一个信息泄露漏洞。