在渗透过程中,Burp抓包出现问题是一件特别头疼的事。可能是证书的原因,可能是端口被占用的问题,甚至还有一些无法解释的玄学问题。很影响我们渗透的心情。 本周给大家分享一个会引起Burp抓包出错的情况,以及如何排查解决它!
0x01
实际场景
本周接到了一个渗透测试公司官网的任务。我如常打开Burp,挂上浏览器代理,开撸。然而发现无法访问,显示了Burp的一个错误Software caused connection abort: recv failed,但是其他网站是可以正常访问的。
0x02
排查原因
1. 代理功能无法正常工作?
设置代理的情况下,其他网站都是可以访问,说明Burp的代理功能是正常工作的。
2. 公司网络限制?
刚开始连接的是公司内网,我在想难道网络管理员检查出我的代理到burp的流量?(虽然知道可能性不大)于是换成手机热点也不行,挂代理也不行。看来不是网络限制问题。
3. Burp发送的不是浏览器原始数据包?
不设置代理,访问公司官网首页,然后使用Wireshark抓住浏览器的原始数据包。
然后再设置代理,刷新首页,Burp抓包。最后将这两个包的内容进行对比,发有以下不同。
说明Burp偷偷把HTTP头Connection的值由keep-alive,改为了close。
于是我在Burp的代理功能(Proxy)的设置(Options)中发现了如下选项。果断去掉选中状态。
然后官网就可以在代理模式下打开了。
后来思考了下,网站Web服务器应该是配置了Keep-Alive开启,而Burp在获取到浏览器的请求包后擅自修改掉了Connection头的值close,导致服务器没有发送返回包到客户端,最终引起Burp抓包报错。
0x03
思考原因
虽然问题解决了,不过还是有点好奇,Burp为何偷偷将原始数据包HTTP头Connection的值由keep-alive,改为了close?
去Burp官网翻了下文档,对这个选项描述得很简单,还是一头雾水。
不过Burp Intruder模块中也有这个选项,官方文档解释得相对详细点。
意思如下:
Set Connection:close
(设置连接:关闭) - 此选项使Intruder(入侵者)添加或更新连接头的值为“close
(关闭)” 。在某些情况下(当服务器本身并不返回一个有效的Content-Length
或Transfer-Encoding
头),这个选项可以让攻击更快速地执行。
0x04
参考文章
-
https://portswigger.net/burp/documentation/desktop/tools/proxy/options
-
https://portswigger.net/burp/documentation/desktop/tools/intruder/options#attack-request-headers
本文始发于微信公众号(回忆飘如雪):【第7周】排查引起Burp抓包出错的一个小问题
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论