1. 简介
Proxy——是一个拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查
看,修改在两个方向上的原始数据流。
Spider——是一个应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。
Scanner[仅限专业版]——是一个高级的工具,执行后,它能自动地发现web 应用程序的安全漏洞。
Intruder——是一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的
数据,以及使用fuzzing 技术探测常规漏洞。
Repeater——是一个靠手动操作来补发单独的HTTP 请求,并分析应用程序响应的工具。
Sequencer——是一个用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
Decoder——是一个进行手动执行或对应用程序数据者智能解码编码的工具。
Comparer——是一个实用的工具,通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。
2. 具体介绍
2.1 仪表盘
BP中的仪表盘有一个扫描功能,可以对一些网站进行漏洞扫描,但是BP的漏洞库不是很强大,一般扫描网站漏洞
还是用专业的扫描工具,比如AWVS
输入需要扫描的网站,如果只勾选爬行,则不会对网站进行漏洞检测

详细范围中可以设置要包含的多个url或排除的url

正在爬行扫描
查看扫描结果
查看BP中自带的漏洞库:目标 ---》问题定义,漏洞库中已经定义好了什么是高危,什么是低危漏洞
2.2 目标
在目标模块中可以对爬行的结果进行指定过滤,方便我们对扫描的结果进行查看
如:只显示返回的状态码为2xx的结果
2.3 代理
代理模块是BP中经常使用的一个模块,做渗透测试需要抓包的时候,使用的就是BP中的代理
代理就是在客户端和服务端中间多了一个传递者,不设置代理时,客户端的请求会直接发送到服务端,服务端的响
应会直接返回到客户端,有了代理,客户端的请求会先被代理给拦截了,然后通过代理发送给服务端,当服务端做
出响应的时候,也是代理先接收到服务端的响应然后再发送给客户端
设置代理
BP中默认监听的地址是127.0.0.1:8080,也可以自己指定ip和port
设置谷歌浏览器代理
填写ip和port
打开BP中的请求拦截
此时我们在谷歌浏览器中输入网址,按下回车,数据包会先被BP拦截到
默认BP是无法抓取HTPPS的包,需要在浏览器中添加BP的证书,因为当浏览器向BP发送HTTPS请求的时候,会检
验BP这个假的服务端是不是值得信任,评判的依据就是证书,但是浏览器上默认没有信任的BP证书,会自动断开
链接,具体信息见下图
导出BP上的CA证书





在谷歌浏览器中添加BP导出的CA证书
导入证书


选择证书的路径



这个时候BP就可以抓取HTTPS请求的包了
默认用谷歌浏览器访问百度的时候,实际上会有很多隐藏的请求,所以你在放包的时候,会有好几个包需要放行,
所以你不用大惊小怪,当然你也可以在拦截的时候过滤掉一些垃圾包,右键设置即可
BP默认是不会对服务端响应的数据包做拦截的,当然你也可以在选项中勾选拦截响应包
拦截服务器的响应包
HTTP历史记录,这里面会记录你所有拦截和扫描到的包
拦截客户端请求中,BP默认是不会对图片,js,css等请求做出拦截,也可以自定义不拦截
搜索和替换请求头,也可以自己添加请求头,达到隐藏客户端请求头的目的
2.4 测试器
测试器(Intruder)本质就是一个暴力破解的工具,我们以一个简单的登录爆破来学习这个模块
首先准备一个登录但不需要验证码的页面链接,这里我们以bWAP的登录页面为例
将拦截到的数据包发送到测试器
清除变量,选择攻击类型为狙击手(Sniper)
选中需要替换的数据,添加变量
加载爆破字典,点击右侧开始攻击
查看爆破结果,根据返回的状态码,以及数据包的长度,可以判断出bug可能是爆破出来的正确密码,因为爆破
采用的就是撞库方法,一个一个去发请求尝试,大多数结果都是返回的登录错误页面,一旦有和大多数包不同的
状态码或者内容长度,就极为可能是登录正确返回的数据包。
有的时候密码可能是在前端加密之后提交到后台,这个时候我们就需要在爆破之前,对有效负载做处理,比如常见
的MD5加密,如果字典很大也可以将线程数调大,加快爆破速度。

补充
在用BP密码爆破的时候,你有可能会遇到一种状况,就是状态码都是一样的200 OK,返回的数据包的长度也是一
样的,但是确实存在一个数据包是登录成功返回的,那么你怎么判断呢?这个时候你就要首先去网站注册一个账号
密码,然后正常登录,BP抓包,查看登录成功后的数据包中有无特殊的字符串,我们可以将这个特殊字符串,设
置成匹配规则,然后再进行管理员密码爆破的时候,用这条规则匹配返回的数据包内容,进而在返回状态码和长度
一样的情、况下,也能找到正确的那个登录请求
四种攻击类型
1.Sniper(狙击手),只能设置一个payload(有效负荷集),每次只能替换一个变量,你可以简单地理解为只能
添加一种类型的爆破字典当开始攻击的时,会将具体的有效负荷集里面的值依次,替换到之前设置的变量中,去爆
破,这种攻击模式适用于对单一位置进行爆破,比如常见的知道管理员账号,但是不知道密码,可以将密码数据添
加成变量,然后单一爆破。
2.Battering ram(破城锤),表示两个爆破点使用同一个payload值依次去执行,如果simplelist是5个,那么就
执行5次,两个位置的值每次都是相同的。原理如下图所示:
3.Pitchfork:(音叉)这个模式下,一般两个爆破点,并且会设置两个payload1和payload2,payload1就设
置给爆破点1,payload2就设置给爆破点2,总共也是执行5次。并且一般按照payload少的执行,适合撞库攻击
4.clusterbomb(集束炸弹),表示如果有两个爆破点,同时设置两个payload1,和payload2,simplelist是3
个和3个,那么就会执行一个笛卡尔积的次数。即就是9次。
首先payload2的第一个值设置给爆破点2,payload1的值依次执行给爆破点1,然后依次尝试,当payload1中的
值尝试完毕后,payload2的第二个值会设置给爆破点2,payload1的值再依次执行给爆破点1,知道payload2中
的值全部遍历一遍。
2.5 重发器
一般我们手动挖洞的时候,最常用的就是重发器,因为我们在重发器中可以更改请求包的请求头,或者是要向服务
端提交的数据,可以不断调试的一个模块
2.6 编码器
常见编码
常见解码
2.7 对比器
Burp Comparer在Burp Suite中主要提供一个可视化的差异比对功能,来对比分析两次数据之间的区别。使用中
的场景可能是:
-
枚举用户名过程中,对比分析登陆成功和失败时,服务器端反馈结果的区别。
-
使用 Intruder 进行攻击时,对于不同的服务器端响应,可以很快的分析出两次响应的区别在哪里。
-
进行SQL注入的盲注测试时,比较两次响应消息的差异,判断响应结果与注入条件的关联关系。
可以按照一个字符,也可以转换成字节比较,一般分析都是用字符比较,
2.8 插件扩展
Burp在软件中提供了支持第三方扩展插件的功能,方便使用者编写自己的自定义插件或从插件商店中安装扩展插
件,这里以一个过waf的第三方插件(Bypass WAF)为例,介绍如何使用,如果你恰巧擅长开发,也可以自己写
插件然后安装在BP中使用,你会发现BP这个软件是那么的强大!
可以在插件中设置一些配置,这个插件默认不需要设置
使用插件,首先将安装的插件添加进去
这个时候可以去抓包,测试一下
多出来的这些请求头的作用就是,告诉防火墙这个数据包是本机发送的,这样防火墙就不会拦截,我们也就绕过
了waf,但是服务端回包的时候仍然是把数据包发送到我们的电脑上
2.9 用户选项
这个模块主要是设置一些字体,以及页面显示,默认BP抓包的记录是保存在临时文件中的,所以你每次打开BP都
会提示你上次的记录要不要删除等
推荐在用户选项中将字符集设置成GBK,这样包里面的中文字符不会乱码
如果当自己设置了一些自定义,想要恢复默认值时可以执行这个操作
写在最后
详细完整全面的BURPSUITE软件的使用可见大佬博客: