BurpSuite用法

旧文迁移,不过现在网上已经出了几款burpsuite手册了,这个也就自己看看吧(请勿吐槽各个功能的中文翻译)。

总览


burpsuite是web渗透必不可少的东西,功能超级强大。长这样,诺:

由上至下,第一行是功能模块,第二行是相应模块的二级菜单。第三行是显示过滤设置。

功能模块:

1.Target(目标)——显示目标目录结构的的一个功能
2.Proxy(代理)——拦截HTTP/S的代理服务器,作为一个在浏览器和目标应用程序之间的中间人,允许你拦截,查看,修改在两个方向上的原始数据流。
3.Spider(蜘蛛)——应用智能感应的网络爬虫,它能完整的枚举应用程序的内容和功能。
4.Scanner(扫描器)——高级工具,执行后,它能自动地发现web 应用程序的安全漏洞。(专业版才能使用)
5.Intruder(入侵)——一个定制的高度可配置的工具,对web应用程序进行自动化攻击,如:枚举标识符,收集有用的数据,以及使用fuzzing 技术探测常规漏洞。
6.Repeater(重复器)——一个靠手动操作来触发单独的HTTP 请求,并分析应用程序响应的工具。
7.Sequencer(会话)——用来分析那些不可预知的应用程序会话令牌和重要数据项的随机性的工具。
8.Decoder(解码器)——进行手动执行或对应用程序数据者智能解码编码的工具。
9.Comparer(对比)——通常是通过一些相关的请求和响应得到两项数据的一个可视化的“差异”。
10.Extender(扩展)——可以让你加载Burp Suite的扩展,使用你自己的或第三方代码来扩展Burp Suit的功能。
11.Options(设置)——对Burp Suite的一些设置

准备

Kali当然自带这个,是免费版的,因为功能强大经常用到,所以建议在windows里也安装一个,一般都是使用破解版吧,方法:

1.安装Java环境http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

jdk,jre都可以,开心就好,然后安装(可能需要配置环境变量,方法超简单,不会可以百度的)

2.百度burpsuite破解版,下载解压有两个文件

如图,右击burploader.jar用Java打开即可。可能询问是否升级,取消即可。

3.配置浏览器,还是喜欢使用Firefox,配置方法就和实验环境中代理设置一样。可以直接使用autoproxy默认监听8080端口

对于其他的浏览器一般都有proxyswitch插件

或者直接去浏览器里面设置代理也可以。默认是本机的8080端口,后续会继续说明的。

测试工作流程

Burp支持手动的Web应用程序测试的活动。它可以让你有效地结合手动和自动化技术,使您可以完全控制所有的BurpSuite执行的行动,并提供有关您所测试的应用程序的详细信息和分析。
让我们一起来看看Burp Suite的测试流程过程吧。 如下图

翻译

Burp Suite功能按钮键翻译对照

导航栏
Burp BurpSuite save state wizard 保存状态向导
restore state 恢复状态 Remember setting 记住设置
restore defaults 恢复默认 Intruder 入侵者
Start attack 开始攻击(爆破) Actively scan defined insertion points 定义主动扫描插入点
Repeater 重复器 New tab behavior 新标签的行为
Automatic payload positions 自动负载位置 config predefined payload lists 配置预定义的有效载荷清单
Update content-length 更新内容长度 unpack gzip/deflate 解压gzip/放弃
Follow redirections 跟随重定向 process cookies in redirections 在重定向过程中的cookies
View 视图 Action 行为
功能项
Target 目标 Proxy 代理
Spider 蜘蛛 Scanner 扫描
Intruder 入侵者 Repeater 中继器
Sequencer 定序器 Decoder 解码器
Comparer 比较器 Extender 扩展
Options 设置 Detach 分离
Filter 过滤器 SiteMap 网站地图
Scope 范围 Filter by request type 通过请求过滤
Intercept 拦截 response Modification 响应修改
match and replace 匹配和替换 ssl pass through SSL通过
Miscellaneous 杂项 spider status 蜘蛛状态
crawler settings 履带式设置 passive spidering 被动蜘蛛
form submission 表单提交 application login 应用程序登录
spider engine 蜘蛛引擎 scan queue 扫描队列
live scanning 现场扫描 live active scanning 现场主动扫描
live passive scanning 现场被动扫描 attack insertion points 攻击插入点
active scanning optimization 主动扫描优化 active scanning areas 主动扫描区域
passive scanning areas 被动扫描区域 Payload 有效载荷
payload processing 有效载荷处理 select live capture request 选择现场捕获请求
token location within response 内响应令牌的位置 live capture options 实时捕捉选项
Manual load 手动加载 Analyze now 现在分析
Platform authentication 平台认证 Upstream proxy servers 上游代理服务器
Grep Extrack 提取

如果使用过程中出现什么问题可以在alert里面查看下:

截断代理


先来介绍最核心的功能,代理:

设置

第一排就是设置监听网卡,这样其他应用就可以通过设置代理连接到burpsuite:

添加和编辑监听器设置都是一样的,任选其一,打开,设置绑定端口和地址,端口任意设置,只要不与已使用端口冲突即可。地址分三种:

1. Loopback即127.0.0.*这种,只有本机能够使用。
2. All为绑定到所有网卡的地址,这样别的主机可以通过ip地址等来设置此软件为代理。(注意,这样任何人都可以通过输入burp这个地址来访问burpsuite的代理历史,可能造成信息泄露)。
3. Special为自己指定ip本机某网卡的地址。

- redirect这会将本监听器代理的流量重定向到特定主机的特定端口。
- Force会强制使用ssl(对于不支持ssl的会报错)
- Support能够代理非浏览器但使用http协议的数据。(如手机的微信内置浏览等)


一般都是使用公钥证书,就是点击import/export选择导出,然后重命名为****.der。在浏览器中导入,选择用于web即可。


客户端请求截断设置,来控制截断的内容。
上面是设置规则,可以添加,规则从上到下匹配,使用and|or连接,类型支持域名, IP地址,协议, HTTP方法, URL,文件扩展名,参数,cookie ,头/主体内容,状态代码,MIME类型, HTML页面标题和代理的几乎任何属性进行配置侦听端口,然后是匹配还是不匹配,内容可以朴素的也可以正则表达式。下面两个选项也建议勾选,第一个是自动修复语法错误,第二个是自动更新头里面的长度信息(当编辑内容后长度会改变,所以这个很有必要)

服务端响应截断设置,可以看到默认是未激活状态,其他的和上面一样。

分别是显示隐藏的表单域(子选项是突出显示隐藏的表单域,回家一个红色的框)

- 激活被禁用的表单
- 移除输入长度限制
- 移除js表单验证
- 移除所有的js
- 移除<object>标签
- 将HTTPS降级为http
- 移除cookie 的安全标志


这是自动匹配与替换,类型很多,匹配可以使用朴素的也可以使用正则匹配。

杂项下面有几个常用的选项:解包请求,响应数据包。不使用http://burp,隐藏burp错误(可以隐藏痕迹),不记录代理信息,每次打开软件默认开启代理。

截断


如图,软件默认是开着截断的,会截断从客户端到服务端的流量,当有数据包被截断它会变黄,看到请求是到http://hia-hia-hia.com:80的,可以单击那只笔编辑目标。
下面四个选项,第一个是发送数据,第二个是丢弃数据,第三个是开启/关闭截断,第四个是其他的一些操作(太多,不急)。右边四色块是为这个包写注释的,并辅以特殊颜色,可以在历史里面看到。
下面是查看数据的多种格式,raw为原始的,para是以参数和值的形式显示,header是头以键和值显示,hex为16进制显示。
下面的内容是可以直接修改的。
历史:

默认历史记录都会保存在这里,第一行是显示过滤器,下面的列表可以通过点列名对其进行排序,下面可以看到是否有参数,是否被标记过等信息。

点击如图,分别是

按响应类型:只显示在scope内的(后面会说),隐藏没有响应的,只显示有参数的。
按mime类型
按状态码
自定义内容:可以使用正则,大小写敏感,反向搜索。
按扩展名搜索:只显示或是隐藏特定后缀
特殊过滤:只显示有注释的或是高亮的
按照监听器的端口过滤
显示所有和隐藏所有。

(设置以后在其他地方左击即可生效。)

单击一个历史记录(如果双击会小窗口显示,效果一样),如果被修改会有三种信息,原始请求,修改后请求,响应请求。二级显示意思一样。
最下边有搜索框,可输入搜索内容,支持正则,大小写和反向,左右箭头即左右搜索。
行为:


其他地方右击一般也会有,这里最全就以这个为例。
上面部分是将数据发送到其他模块(很常用),例如send to spider会将这个数据包发送给蜘蛛模块,此时可见蜘蛛模块已经自动变黄,打开看到正在爬行,其他的也一样,可以自己试下看效果。

增强工具,主要用到最后一个可以自动生成一个csrf的poc,在post请求中十分方便,其他的有改变请求方式,改变编码,复制URL,复制并作为curl命令,复制为一个文件等等
这几个都是平常在用的功能,第一个灰色的转换选项也很好用,是转换编码的,当选中内容后这个就被激活,可以选择转换成其他编码。

目标


站点地图


这是站点地图从左边看,它有两种,有实际访问的是黑色,只在手动爬站是被包含在页面而未被点击的URL会显示为灰色,点击可以看到站点结构。右边是具体内容,也有安全评估提示。同样,站点地图也支持过滤(和代理样就不重复了)

右击也会有,添加到scope,或是去蜘蛛爬站,主动扫描,被动扫描。

当手动爬站差不多时,如果情况允许可以使用主动扫描,会有向导,这是过滤选项,有去掉图片URL,没参数URL重复URL等。然后下一步:

可以再去删除指定URL,如删错了可以重置再来(revert)然后就会开始主动扫描了。

增强工具:搜索,可以进行全局搜索。找注释,找脚本,找reference,分析目标就是显示有哪些URL哪些参数。
比较站点地图需要有一份以前保存的站点地图文件,然后会以向导方式进行比较两份站点地图。


这是保存状态的方式,可选保存内容,还可以加密,这在测试不同账号权限时很有用。

范围


范围是限定测试范围的(废话),上面是只包括那些范围,下面是排除哪些范围,添加编辑可以使用正则表达式,简单的方法也可以直接粘贴,或是载入一个URL文件。下面一样。

爬行



爬站,上面是激活爬站,清空队列,然后是状态,很多地方都有的一个环形箭头是重置的意思,下面是爬行目标,默认是scope里面的,也可以自己设置。

- check robots.txt会将robots的内容纳入爬行范围
- detect custom "not found" responses不根据404状态码来确定not found内容。
- ignore links to non-text content忽略那些对非文本文件的引用来提高速度(例如图片视频等的URL)
- make a non-parameterised request to each dynamic page对每个动态页面去掉参数,这样就能判断出参数的作用了。
- maximum link depth就是爬行的最大深度,需要设置在合适的范围,否则速度太慢或是未爬完整。
- Maximum parameterized requests per URL请求该蜘蛛用不同的参数相同的基本URL的最大数目。将此选项设置为一个合理的数字可以帮助避免爬行“无限”的内容,如在URL中的日期参数的日历应用程序。

就是手动爬站的,不用管。

这是用来提交表单的,第一个是不提交,第二个是比较常用的弹窗提醒


如图,在爬到需要提交表单的页面会有弹窗提示,若要登录可以直接输入值,否则直接点忽略。
第三个是自动提交,他可以提前填好参数名和值,其中参数名可以使用正则匹配也可以使用精确匹配,并且可以一个参数指定多个值(这时就可以使用不同的值来测试,下面有个迭代次数就是来限制这种使用不同值测试次数的)对于没有匹配的值,可以设置一个默认值。


这时提交登录表单的,不是很懂其他的,一般使用第二个吧,会弹窗输入很方便的。

爬网线程数,失败尝试次数,重试时间间隔,爬网时间间隔,增加随机可能。

这里可以设置爬行时使用的http头,这样比较隐蔽而且对于特殊目标可能需要特殊user-agent才能访问。下面是使用http1.1版,默认是1.0版,最后的使用referer头,默认爬网是没有referer的,使用这个能记录referer并在爬网时发送它。

主动扫描



眼熟?和蜘蛛爬站一样。。。

这里列出支持的漏洞类型,分级别的,有测试详细说明

在哪些地方测试漏洞,分别为URL里面的参数,body里面的参数,cookies参数,参数名,http头,amf(flash使用参数),rest-style参数,下面是吧URL数据放进body里面测试等等。

第一个是隐藏注入点测试,例如一些ajax的参数注入等,下面是要跳过测试的参数。

主动扫描引擎设置和蜘蛛一样,需要注意有个跟随重定向,按具体情况选择是否使用,若使用收到redirect响应头会跟随重定向。下面的第一个是扫描速度设置,速度快可能会漏掉,要完整的扫描速度可能会较慢。接着是结果准确度,准确度要求太高可能会漏掉,准确度太低可能会误报。

对哪些漏洞进行测试,一般都是所有漏洞

这是手动爬站时的被动扫描设置。

扫描开始的方法上一篇已经讲到过,如图开始扫描,可以看进度,红色代表有高风险的漏洞。

这时点击右键可以看到详细的信息,例如对于漏洞,他会显示测试的攻击载荷,如上图,然后查看响应,如下图,可以看到他是通过判断攻击后返回内容是否有期待内容来判断的。

另外,burp响应里面的渲染功能也很好的,直观的查看效果。

有时他会经过多次测试来判断,但是经过测试发现扫描器的主动扫描能力其实并不太强,所以他在手动测试前做个总的测试还好,但不要太信赖他。

其实burp支持的漏洞测试类型在不断的丰富中,他有很多的扫描插件。

扩展



如图可以直接导入扩展,支持Java,ruby和Python的扩展(注意后面两者需要下载jpython,jruby提供环境,在options里面加载)标准的输出都可以很好的融合在UI界面里.

这里设置环境的,例如在kali里面默认用的openJava在这里可以设置为oracleJava,其他的就是设置Python,ruby环境的选项,因为一般不把burp拿去做主动扫描所以一般都不做这些,自行百度。

这是直接的插件商店,对于Java的可以直接安装,其他的需要先安装环境才能安装。安装后会在功能模块栏多出插件的选项设置(如下图)。

重复器


最常用的一个功能:

从上面看,功能模块是repeater,下面有几个页签,是针对不同URL的,可以添加可以删除(添加方法一般都是在截断里面右键使用sendto,忘记可见前面内容)。
接着有两个按钮,go就是发送,cancel取消。后面两个箭头是翻阅一个URL多次发送数据的记录的。
下面左方就是请求区域,会在这里做数据修改,看到有多种视图,是具体情况选择,右方响应界面,一般选择渲染后视图,不过特殊情况可能需要其他的。
它的功能就是对一个URL进行多次测试,观察微小改变的影响(很常用)。

这里因为需要改数据,所以第一个自动更新长度很有必要,如果是压缩的会解压,是否跟随重定向,在重定向中是否要发送cookies。

Sequencer



寻找set-cookie的响应,将它发送到sequence。


这里选择要测试的cookies,也可以使用configure来自定义。
点击开始捕获。

看见差不多就可以选择停止并开始分析了至于分析结果,我看不懂。。。。
这个就是来看cookies是否可以预判。

解码器



我对这个的功能持怀疑态度(难道是不会用?),由上至下可以选择是文本形式还是16进制形式,然后是按照哪种方式解码,按照哪种方式编码,哈希加密,自动解码。

比较器



里面要比较的东西一般也是直接子啊代理里面使用sendto发送来的,当然也可以使用past直接粘贴。注意这里比较分为两种,请求比较和响应比较,需要看清楚。比较就是上面一个框选择一个条目下面一个框选择一个条目。然后点击words或是bytes比较。他们的区别在于一个是显示文本,一个显示16进制数据。

如图这是words比较,他有三种标记,分别代表增删改,如图可以清晰的看出不同之处,对于高度相似的页面可以使用sync view这会同步比较,就是下拉左边框右边也会同步下滑作对比。

设置


1.7版本做了更细的分类,不知道就去两个地方找一下吧

这是用户设置,杂项栏,首先是设置热键。然后是设置日志记录,接着设置缓存目录。


这是连接栏,第一个是针对服务器认证(非表单认证的),支持basic,ntml等,可以自己查看下,按照要求填写即可。
下面那个比较常用,上游代理,burp去连接web服务使用的代理,用来隐藏身份或是突破限制吧,直接点添加,一般目标主机直接输入*代表所有,下面的就写代理服务的设置,有必要也可以填写认证账号。

这是使用socks代理(例如使用洋葱头),最后一个参数是dns查询也使用代理进行。

这是显示设置,调整软件字体的,使用的是系统自带的字体。对于编码默认是自动识别,可以手动设置。

这是项目设置,其他地方差不多,首先的连接设置他可以重新配置也可以使用用户设置。


这设置超时选项。接着是主机解析,这里的优先级最高,会优先使用这个解析,接着才是host文件最后是dns服务器。
最后一个是创建一个扫描任务,向导式的。

入侵器


目标


如图,还是一样的可以使用sendto行为将数据发送到intruder模块,下面的1.2是针对不同的URL的,对此进行切换。现在选择的是target栏,一般都不需要对此进行修改,看到右边可以开始攻击。

位置


这里设置攻击插入点的位置,可以选择攻击类型:

- sniper        单一的替换一个位置后再去替换另一个位置,指定一个字典即可,例如标记admin和passwd,用一个字典,在admin不变的情况下去替换passwd然后再反过来。
- battering        同时用相同的字典替换两个位置,指定一个字典即可,例如标记admin和passwd,用一个字典的一个词同时替换admin和passwd。
- pitchfork        同时取一排,一遇到结束就结束,例如标记admin和passwd,用两个字典分别用于替换admin和passwd,他们都是选择同一行,知道有一个字典结束整个测试结束。
- cluster bomb        组合,两个字典,例如标记admin和passwd,用两个字典分别用于替换admin和passwd,此时会在admin字典里选择一个然后去尝试passwd字典的每一项,然后在admin字典里选择下一个继续这种操作。

至于什么是标记,就是如图$$包围的字符串,即攻击载荷的插入点。默认会自动识别,可以根据实际情况进行选择,例如选中一个字符串点击右侧的添加按钮,也可以删除,清空等。。。

载荷


当需要多个字典时,payload设置需要为每个测试点设置字典。
下面说说载荷类型

这种类型可以载入一个字典文件,也可以手动输入字典,还可以使用内置的一些常见字典(最下排那个选项,包括目录遍历,sql注入,xss利用,文件名,目录名,扩展名,等等web有关的字典几乎都有,自己可以看看)
其他的知道的简单说下:

- runtime file    直接载入一个文件
- case modified    在单一表的基础上增加了大小写改变的功能
- character blocks    设置一个基础的字符,设置最小值最大值和步长会重复那么多次进行测试,例如输入A最小为100,步长为100他会以100个A,200个A….进行插入测试
- numbers        可以设置按顺序还是随机数,他们需要指定开始与结束数字。按顺序需要指定步长,随机则需要指定个数。对于数字的格式可以选择普通的,这时可以设置整数与小数的位数范围,选择16进制是只能指定整数范围
- Username generator    用户名生成器,输入用户名可以按照一定的规则生成用户名相关密码
- Brute Force 暴力破解,指定字符集合长度范围会排列组合生成。
- Copy otherpayload        对于有多个payload的可以直接使用其他payload的设置
- Date        可以使用一段日期来破解


这是另一个设置,在把payload设置好后可能还是不能进行测试,因为可能payload并不符合要求,这个可以对它做些转换,包括:

- 添加前缀
- 添加后缀
- 进行加密:支持base,html,hash,URL,多种数据库的加密
- 进行解密:支持base,html,URL解密
- 替换内容
- 使用子串
- 修改大小写
- 对匹配内容不测试
- 等等


这是对一些敏感字符进行URL编码。
选项:

默认就好,自动更新长度,连接还是使用close

这里设置时间相关的,前面的前面已经有过。

- Theottle 是发送数据的时间间隔,可以设置一个固定的间隔,也可以设置一个范围,在那个范围内随机。
- Start time    是什么时候开始攻击,一般都是立即吧,可以设置定时


这个用来做结果匹配,例如设置一个登陆成功的特征,就可以很容易在结果里面看到成功的值,可以使用简单匹配也可以使用正则表达式。(特别的下面有是否大小写敏感与不匹配http头)

这是对于重定向头的反应,是跟随还是丢弃什么的。
最后来张测试结果图,代表burpsuite内容完全结束。。。。

来源


乌云-小乐天:http://drops.wooyun.org/author/小乐天
安全牛-kali-Linux