作者:三思之旅

预估稿费:300RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

在Web渗透测试过程中,BurpSuite是不可或缺的神器之一。BurpSuite的核心是代理Proxy,通常情况下使用BurpSuite的套路是:浏览器设置BurpSuite代理——>访问Web应用程序——>BurpSuite抓包分析。本人从事Web渗透测试尚不足一年,这期间在代理设置过程中踩到过一点『小坑』,现在将我踩过的『小坑』总结一下。本文主要面对新人朋友,老司机们请不吝赐教~

0x01 一般情形

最一般的情形是针对采用HTTP协议的Web应用程序的渗透测试。这种情况下,直接设置浏览器的代理服务器为BurpSuite即可,默认为127.0.0.1:8080。

当然,直接更改浏览器的代理服务器设置比较繁琐,更好的办法是使用浏览器插件,预先设置好代理方案,然后根据实际情况一键切换。Chrome推荐使用Proxy SwitchyOmega插件:

Firefox推荐使用FoxyProxy

至于IE浏览器,说实在话用得很少,不建议用于渗透测试。一方面,IE不支持扩展插件;另一方面,IE的代理设置也就是系统全局代理,一旦更改了IE的代理,除了那些自带代理设置的程序外(如安装了Proxy SwitchyOmega扩展的Chrome浏览器),其他程序请求数据都要走代理,给我们的测试带来很大不便。但是,如果你非要用IE的话(比如针对某些不支持Chrome和Firefox的网银系统进行渗透测试),也有比较方便的解决办法,容我先卖个关子,后文会有说明。

0x02 HTTPS网站的情形

许多人在第一次使用BurpSuite抓取HTTPS网站报文时都会遇到『您的连接不是私密连接』(Chrome)、『此网站的安全证书存在问题』(IE)或者『您的连接不安全』(Firefox)的问题,这时候怎么办?

这个问题其实很简单,安装一个证书即可解决,想知道原因的可以自行Google一下HTTPS原理就能够得到答案。

首先,浏览器设置好BurpSuite代理服务器后,访问http://burp,然后点击右上角的CA Certificate,这时会自动下载一个名为cacert.der的证书文件。

打开这个证书文件,根据提示安装这个证书,基本上是一路『下一步』,唯一需要注意的是,在『证书存储』这一步选择将证书存储在『受信任的根证书颁发机构』。

证书安装好之后,Chrome和IE就能够正常访问HTTPS网站了(由于Google一直在推全网HTTPS,Chrome对证书要求很严格,我们安装的证书不是权威机构颁发的,因此地址栏会一直提示『不安全』,但是不影响使用)。

不过,如果你使用Firefox浏览器的话,还需要增加一步,即将证书导入到Firefox中。打开Firefox的『选项——高级——证书』,然后点击『查看证书』按钮打开『证书管理器』。

在『证书管理器』中,点击下方的『导入』按钮,导入之前下载的cacert.der证书文件,并且在弹出的『下载证书』对话框中,勾选3个『信任使用此CA标识的……』复选框,最后点击『确定』即可。

这时候,Firefox也可以正常使用了。

0x03 移动端流量抓取

有时候,我们还需要对移动APP进行抓包分析,这时候该怎么办?

其实很简单,两步即可解决。

第一步,在BurpSuite的Proxy Listeners中,选中当前在用的代理,点击左侧的Edit按钮,在弹出的对话框中,将Bind to address选项设置为All interfaces。

第二步,手机和PC连接同一Wifi,打开手机Wifi设置,设置HTTP代理服务器为BurpSuite所在的PC的IP地址,端口为BurpSuite的代理端口。以iPhone为例,其设置如下图所示。

然,如果APP走的是HTTPS通道,仍然需要安装证书才能正常访问,方法同前,不再赘述。

0x04 多重代理的情形

在某些网络环境中,访问目标网站需要走代理。比如说,为了访问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』这两个配置项,都是跟代理链相关的。接下来逐一进行说明。

1. 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的顺序很重要,讲究个先来后到!

2. SOCKS Proxy

与Upstream Proxy Servers的作用类似,SOCKS Proxy的功能也是将请求内容发送至相应的代理服务器。不同之处在于,SOCKS Proxy作用于TCP协议层,因此如果设置了该项,那么所有的请求数据都会被发送至SOCKS代理服务器。所以,SOCKS Proxy的设置更简单。同样以google.com为例,先在下方的输入框中依次填入SOCKS代理服务器的IP、端口(如果SOCKS代理服务器需要认证,还需要填写用户名和密码),然后勾选Use SOCKS proxy即可。

需要注意的一点是,如果同时设置了Upstream Proxy Servers和SOCKS Proxy,则根据规则应该发送至上游代理的请求将会通过SOCKS Proxy发送。

0x05 被测客户端不支持代理设置的情形

有时候,我们想对电脑上的某客户端进行抓包分析,然而这个客户端并没有代理设置的功能,怎么办?如果直接设置系统代理当然也是可以的,但是这样一来所有程序的流量都要经过BurpSuite,一方面有可能影响非测试软件的使用;另一方面,BurpSuite中非测试软件的请求记录过多也影响我们的分析测试。有没有更好的解决方案?

答案是肯定的,这时候就需要Proxifier登场了。Proxifier是什么?且看官网的说明:

Proxifier allows network applications that do not support working through proxy servers to operate through a SOCKS or HTTPS proxy and chains.

简单的说,使用Proxifier能够为那些本身不能设置代理的软件设置SOCKS或者HTTPS代理(链)。Proxifier的体积虽小,但功能却十分强大,除了有Windows版之外,还有Mac版的。因此,非常值得关注。

还是通过实例进行说明。有一次,需要对某微信公众号进行渗透测试,有些微信公众号的链接复制到浏览器中可以直接打开,但是这个公众号做了限制,只能在微信中打开,即使改了UA也不行。

微信网页版中只能看到公众号发的文章,而不能进行交互。设置手机代理倒是可以进行测试,但是一边在手机上操作、一边在PC上抓包很不方便,而且容易给领导一种一直在玩手机的错觉……微信PC版功能倒是挺全,然而却不能设置代理!

怎么办?貌似山穷水尽了。最后寄希望于Google,经过一番搜索,直到Proxifier的出现,总算柳暗花明!言归正传,接下来看看Proxifier怎么玩。

Proxifier的界面很简洁,我们重点关注其中的两个功能,即Proxy Servers和Profication Rules。工具栏中最左侧的两个图标分别对应这两个功能。

首先点击工具栏第一个图标,打开Proxy Servers对话框。Proxy Servers对话框分为上下两部分,上半部分用于设置代理服务器,下半部分用于设置代理链。

1. 代理服务器设置

我们先讲讲代理服务器设置。点击Add按钮,增加一个代理服务器,填入相应的代理服务器地址和端口,这里填入BurpSuite的代理127.0.0.1:8080;Protocol中选择HTTPS;点击Advanced按钮,设置一个Custom Label以方便区分。

设置完成之后,可以点击下方的Check按钮测试一下代理是否设置成功。如果出现下图所示的Proxy is ready to work with Proxifier!说明代理设置成功。不过默认的用于测试的目标网站是www.google.com,很有可能出现误判,建议点击右上角的Test Settings按钮将Target host更改为不挂代理也可正常访问的网站。

Proxy Server设置完成之后会提示你尚未设置当前启用的代理服务器,是否要进入规则设置,点击『是』即可进行代理规则设置。也可以点击工具栏第二个图标进入『Proxification Rules』对话框。

默认有两条直连的规则。点击左下方的Add按钮,进入具体的规则设置页面。

设置内容并不复杂,一共五个设置项:

Name:可任意设置,建议设置有意义的名称以方便使用。

Applications:设置代理的应用,此处设置的是微信的主程序wechat.exe。

Target hosts:设置访问哪些网站走代理,根据实际情况填写。

Target ports:设置访问目标网站的哪些端口才走代理,根据实际情况填写即可。

Action:这里选择上一步设置的代理服务器即可。除了自定义的代理服务器外,这里还有Direct和Block的选项,分别是直连和阻止连接,说明Proxifier还可以有选择的屏蔽某些站点,在某些情况下还是很有用的。

规则设置好之后,可点击规则列表框右侧的方向按钮,更改规则的顺序。和BurpSuite的Upstream Proxy Servers一样,这里也讲究个先来后到,所以当前在用的规则越靠前越好。如果你设置好代理及规则之后不起作用,可以到这里看看顺序是不是没有调整好。

一切设置就绪,别忘了点击OK按钮保存。这时候,在PC版的微信中对目标公众号进行相应的操作与访问,BurpSuite就能够抓取到HTTP报文了。同时,在Proxifier中能够看到连接状态与日志。(PS:我发现每次使用Proxifier一开始总会出错,过几秒钟就正常了,不知道啥原因?)

回到本节开头的那个问题,对于那些无法设置代理的客户端程序,可以使用Proxifier为其设置代理,进而使用BurpSuite等工具抓包分析。此外,如果将Proxification Rule中的Application设置为IE浏览器,即可选择性地将目标站点的HTTP请求发送至BurpSuite,这就解决了使用IE进行渗透测试时代理设置不方便的问题。

2. 代理链设置

接下来说一说Proxifier的代理链功能。为了实现代理链,首先需要设置多个代理(在Proxifier中,仅有一个代理服务器的代理链也是允许的,但那没什么意义)。还拿google.com的例子进行说明,我们需要两个代理:BurpSuite(127.0.0.1:8080)和SS(127.0.0.1:1080)。先在Proxy Servers中增加一个SS(127.0.0.1:1080)的SOCKS5代理服务器。然后点击下方右侧的Create按钮,新建一个代理链,名称随意,比如BurpSuite->SS。最后用鼠标依次将上方的BurpSuite和SS代理服务器拖到下方即可。注意,这里的顺序也很重要。

点击Create按钮下方的Type按钮可以设置代理链的类型,一共有3种类型的代理链:

Simple Chain:简单类型,请求数据从上到下依次经过各代理服务器,这个是默认选项。

Redundancy:冗余类型,如果第一个代理服务器无法连接,则尝第二个,以此类推。

Load Balancing:负载均衡类型,请求数据会随机地发送到列表中的各个代理服务器。

按照我们的需求,需要选择默认的Simple Chain。有了代理链,接下来仍然需要设置代理规则,设置方法同前,只不过在Action中选择刚才设置的代理链即可。

BurpSuite自带的Upstream Proxy Servers和SOCKS Proxy完全可以解决google.com的问题,这里仅仅是以此为例进行说明。Proxifier的代理链功能十分强大,至于怎么用就看大家的脑洞了~

0x05 结束语

本文总结了我在使用BurpSuite过程中所学会一点关于代理设置的小技巧。个人感觉平时在使用BurpSuite的过程中,仅仅用到了一小部分功能。今后应该抽空多研究一下自带的帮助文档,也希望大家多分享相关的技巧,大家共同进步!

【技术分享】BurpSuite 代理设置的小技巧的更多相关文章

  1. BurpSuite 代理设置的小技巧

    原文:https://www.anquanke.com/post/id/85925 作者:三思之旅 预估稿费:300RMB 投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿 在We ...

  2. IOS开发之代理的设计小技巧

    1.关于代理对象的设计小技巧 在设计一个类,需要通过代理和协议来从外部获取需要的动态的数据.那么在这里设计使用代理会有两种方法. <第一种方法> 也是比较常见的: 在你设计的类中,声明一个 ...

  3. 分享两个BPM配置小技巧

    1.小技巧 流程图修改后发布的话版本号会+1,修改次数多了之后可能会导致版本号很高,这个时候可以将流程导出,然后删除对应的流程包再导入,发布数据模型和流程图之后,版本清零 2.小技巧 有的同事入职后使 ...

  4. [分享]关于windows下的小技巧

    ----1.首先,决定您要增加到菜单中的文件类型,以及启动这类文件的应用程序.如果是某些在启动时会自动打开的新文件或让您可以立即使用的应用程序,如记事本.写字板或画图等,就不需要特别的准备工作.但如果 ...

  5. 分享chrome清空缓存开发小技巧

    在打开开发者工具的前提下,左键长按刷新页面小图标(左上角,地址栏左侧),可以调出清空缓存下拉选择项.

  6. Vim设置colorscheme小技巧

    Vim的颜色主题在/usr/share/vim/vim73/colors目录里.打开vim后在normal模式下输入":colorscheme"查看当前的主题,改动主题使用命令&q ...

  7. Xshell远程连接的具体操作和Xshell多会话设置小技巧

    前几天给大家分享了Xshell的安装教程,今天给大家分享如何在Xshell中进行远程连接,并且分享一下如何设置一条命令可以发送多个终端,这里以Xshell6为例进行说明,具体的教程如下. 1.依次点击 ...

  8. 一些 ssh 小技巧

    本文来自网易云社区. 作者:沈高峰 ssh 经常需要使用的,每次使用都  ssh  abc@XXX.def.com -p 12138 -i ~/.ssh/id_rsa 来一遍显然太麻烦了,下面分享一点 ...

  9. 不可不知的辅助测试的Fiddler小技巧

    在以前的博文中,时常有分享Fiddler的一些使用技巧,今天再贴下. Fiddler抓包工具使用详解 利用Fiddler拦截接口请求并篡改数据 Fiddler使用过程中容易忽略的小技巧 Mock测试, ...

随机推荐

  1. module.exports与exports区别

    CommonJS模块规范 Node应用由模块组成,采用CommonJS模块规范. 根据这个规范,每个文件就是一个模块,有自己的作用域.在一个文件里面定义的变量.函数.类,都是私有的,对其他文件不可见. ...

  2. Ubuntu如何安装vncserver

    Ubuntu上安装和配置vncserver,然后通过客户端进行连接,就能够使用图像界面的方式来运行上面的软件了. 1.使用apt-cache search vncserver命令搜索可以用来安装vnc ...

  3. 【JS】Javascript数组操作

    1.提取数组中每个对象的某个属性组成新的数组 如数组为: let arry = [ { name: 'zhao', 'age': 18 }, { name: 'qian', 'age': 19 }, ...

  4. MapReduce流量统计

    准备数据access.log 要用到的只有第二个手机号,倒数第三上行流量,倒数第二下行流量. 1363157985066 13726230503 00-FD-07-A4-72-B8:CMCC 120. ...

  5. Thymleaf 从某处(不包含某处)开始截取字符串到末尾

    简单描述:数据库存放的是id+name,但是做展示的时候,只需要展示name,不展示id.不管是在前台还是在后台,使用传统的方法截取,也是可以的,但是thymleaf提供了一种截取字符串,可以实现从某 ...

  6. 01-Linux操作系统+指令

    一.Linux操作系统     操作系统定义:操作系统直接运行在计算机上的系统软件, 它是与硬件打交道和控制软件运行的计算机程序.          虚拟机:就是模拟一个真实的计算机,好比一个虚拟的电 ...

  7. Django组件之用户认证组件

    一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个: 1.1 .authenticate( ...

  8. 末学者笔记--Linux权限管理

    一.权限概述 Linux系统一般将文件可存/取访问的身份分为3个类别:owner(拥有者).group(和所有者同组的用户).others(其他人,除了所有者,除了同组的用户以及除了超级管理员),且3 ...

  9. SpringBoot 添加mybatis generator 自动生成代码插件

    自动生成数据层代码,提高开发效率 1.pom添加插件,并指定配置文件路径 <!-- mybatis generator 自动生成代码插件 --> <plugin> <gr ...

  10. TFS2015创建项目

    1,在TFS服务器上的团队项目集合中创建集合   2,创建集合完毕后,在VS2017中选择管理连接,创建对应的管理连接.     3,团队资源管理器中新建团队项目.后续就是下一步,下一步完成.帐号权限 ...