在某些网络环境中,访问目标网站需要走代理。比如说,为了访问google.com,我已经
给浏览器设置了SS 代理(默认127.0.0.1:1080),现在我想对google.com 进行渗透测
试,那么该怎么设置浏览器代理?这时候不能简单的把浏览器代理设置为BurpSuite,这
样虽然可以进行抓包,但是没有了SS 的帮助,我们是无法访问google.com 的,抓包也
就没有意义了。这时候该怎么办?那就使用代理链了
顾名思义,代理链就一系列的代理形成的链条。像刚才那种情形,我们首先设置浏览器的
代理为BurpSuite 以便能够抓包;然后为BurpSuite 再设置一个上游代理即SS。这样访
问google.com 时,请求数据先经过BurpSuite,于是可以进行抓包了;然后再流向
SS,最后经过SS 服务器到达google.com。服务器端返回的响应则刚好相反。通过这个
BurpSuite------SS 的代理链,我们就解决了本节开头所描述的问题。
作为一个神器,BurpSuite 是具备这个功能的。在BurpSuite 的User options 下的
Connections 页面中,有『Upstream Proxy Servers』和『SOCKS Proxy』这两个配置
项,都是跟代理链相关的。接下来逐一进行说明。

- Upstream Proxy Servers
在该设置项中,可以设置多个上游代理服务器规则,满足规则的请求将被发送至相应的代
理服务器。只说概念过于无聊,还是以google.com 为例进行说明。
为了对google.com 进行抓包分析,我们首先要设置浏览器的代理为BurpSuite,这一
点是毫无疑问的。为了能正常访问google.com,还需要设置BurpSuite 的上流代理为
SS(127.0.0.1:1080)。点击Upstream Proxy Servers 列表框左侧的Add 按钮,打开
『Edit upstream proxy rule』对话框。这里一共有8 个设置项,一般情况下只需关注前
4 个:
Destination host:这里填入目标网站域名或者IP,支持通配符(* 表示0 个或者任意个
字符,? 表示除点号之外的任意一个字符)。在本例中,我们可以填入*.google.com。
Proxy host:填入SS 代理服务器的IP 地址,即127.0.0.1。如果为空表示直接连接。
Proxy port:填入SS 的代理地址,即和1080。
Authentication type:这里选择认证类型,由于SS 本地代理无需认证,这是选择
None。
如果Authentication type 为None,则接下来的4 项内容无需理会,否则需要根据实际
情况设置以下4 项内容。
Username:用户名。
Password:密码。
Domain:域。仅用于NTLM 认证类型。
Domain hostname:域主机名。仅用于NTLM 认证类型。
设置内容如下图所示,最后点击OK 即可。
这时候你会发现google.com 已经能够访问了,并且BurpSuite 中也成功地抓取到了相
应的请求报文。
你可以同时设置多个Upstream Proxy Servers,在使用过程中,BurpSuite 会按顺序将
请求的主机与Destination host 中设置的内容进行比较,并将请求内容发送至第一个相
匹配的Proxy server。因此,Proxy Server 的顺序很重要,讲究个先来后到!
- SOCKS Proxy
与Upstream Proxy Servers 的作用类似,SOCKS Proxy 的功能也是将请求内容发送至
相应的代理服务器。不同之处在于,SOCKS Proxy 作用于TCP 协议层,因此如果设置了
该项,那么所有的请求数据都会被发送至SOCKS 代理服务器。所以,SOCKS Proxy 的
设置更简单。同样以google.com 为例,先在下方的输入框中依次填入SOCKS 代理服务
器的IP、端口(如果SOCKS 代理服务器需要认证,还需要填写用户名和密码),然后勾
选Use SOCKS proxy 即可。

这时候你会发现google.com 已经能够访问了,并且BurpSuite 中也成功地抓取到了相
应的请求报文。
你可以同时设置多个Upstream Proxy Servers,在使用过程中,BurpSuite 会按顺序将
请求的主机与Destination host 中设置的内容进行比较,并将请求内容发送至第一个相
匹配的Proxy server。因此,Proxy Server 的顺序很重要,讲究个先来后到!