第05课:Burp

第05课:Burp Suite 功能使用指南

前提声明:此次 GitChat 分享所写,只作为教学使用,本课具有一定的危险性,对本文所出现的教程内容读者在进行安全评估和渗透测试的途中需要取得授权,非法测试所造成的结果作者(rNma0y)及GitChat平台不承担任何法律责任。

Burp Suite 尖端的网络安全扫描器在自动化 Web 应用程序安全领域处于领先地位。

真的是一点都不过分,了解详情请继续往下读。

Burp Suite 介绍

Burp Suite 是用于攻击 Web 应用程序的集成平台,它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程。

所有的工具都共享一个能处理并显示 HTTP 消息、持久性、认证、代理、日志、警报的一个强大的可扩展的框架。

单击这里详见官方网址

Burp Suite(以下简称 Burp),该公司发行了两个版本,一个是 Community Edition 社区版,另一个则是 Professional 专业版,所支持的功能也不大相同,专业版提供了 Web 漏洞扫描功能和一些高级工具,而社区版则只是提供基本的手动工具,但 Pro 版的价格是昂贵的,需要用户每年$ 349.00美金。

笔者认为这个工具好就好在能够共享一个 HTTP 消息,能够在各种模块之间交换信息。

如果上天只能让我选择一个 Web 扫描器,那么我会选择 Burp,因为它不仅仅只起一个爬网的作用。

Burp Suite 安装

安装 Burp 很简单,在 Kali Linux 里已经集成了社区版的 Burp,故此不在多叙述。

Windows 的安装环境,需要各位读者先安装“Java”环境后才能打开。

下载好 Burp 之后,里面有两个文件,它们分别是“BurpLoader.jar”和“burpsuite_pro_v1.7.11.jar”,单击“BurpLoader.jar”即可打开软件,如下图所示。

enter image description here

打开软件后会出现如图,现 Burp 官方版本号为“v1.7.26”,笔者手里的是 Pro 版本。

enter image description here

Burp 模块介绍

Target

Target 作为 Burp 的第一个模块,作用是一个站点地图,会在左侧出现所有通过代理服务器的网页都会在此显示。

当访问了https://www.csdn.net/之后,“Target”功能模块已经将所有访问记录给爬取了下来,并显示在左侧,如图所示。

enter image description here

当然,如果想使用 Burp 进行测试,首先要修改一下本机浏览器的代理。

下面以火狐为例来讲解 Burp 的基本配置。

首先需要在火狐的设置里,找到代理设置,设置为和 Burp 软件一样的 IP 即可。

enter image description here

需要注意的就是端口号需要和这上面设置的端口号一致,都是 8080:

enter image description here

Proxy

在 Burp 里,“Proxy”模块是一个至关重要的模块,其布局是这样的:

enter image description here

Proxy 模块里面的 intercept 模块的作用是截断 HTTP/HTTPS 之间的请求流量,如果第三个按钮“intercept is off”,这里是未开启拦截的意识,如果开启了则会变为“intercept is on”。

现在我们拦截下 CSDN 登录页面的 HTTPS 流量。

在我输入了账号密码之后,点击了开启拦截,状态变为“intercept is on”,此时,通过这个 HTTPS 请求下来的流量都会被拦截不发送并且显示在你的“intercept”模块下,如图所示。

enter image description here

去掉多余的参数,在 POST 登录的实际请求只有这一句:

&username=rNma0y&password=147258369&rememberMe=true&lt=LT-1269028-Xs5rYscId3GAlIBVB6NgisRx6zJCo5&execution=e2s1&_eventId=submit

当拦截开启的时候,整个网页是无法请求的,因为发送的所有请求都被拦截下来了,如果你想访问下个网页,选择模块里的第一个按钮“Forward”,这个按钮意味着放行,令它通过请求,发送此数据包。

Drop

Drop 则是丢掉这个包,重新抓取数据。

Action

Action 的功能如下,可以把请求发送到各个模块进行交互。

enter image description here

HTTP history

enter image description here

这个模块的功能则是这个就是截取包的历史记录,把先前截取的数据包历史停留在这里。

Scan

Scan 这个功能模块的作用则是扫描,一个 Web 应用程序的扫描器,是 Pro 版独有的,社区版则不带有此功能。

enter image description here

使用方法是在抓包后右键菜单,出现“Do a active scan”,点击后则会发送到 Burp 的 Scan 模块下,最重要的指示则是会高亮黄色。

enter image description here

Intruder

Intruder 模块则是整个 Burp 工具里最有用的一块,在暴力破解这方面经常会上手,可以通过增加一个字典来实现自动化的攻击。

enter image description here

在 Intruder 模块下的 Position 下可以对 HTTP 请求进行操作,可以把 HTTP 请求里的某个单独的参数设置为变量,来进行替换,比如上图所示,标黄的部分即为变量参数。

Attack Type

Attack Type 里的参数有四种,分别是如下图所示:

enter image description here

Sniper

Sniper 就是将你添加的字典里的数值一次赋给我们的多个参数去组合尝试,比如我们设置了有三个参数,分别是 a、b、c,字典里面有五个值(1、2、3、4、5),那么该模式下 Burp 会把 a 去替换成字典里的数值,b、c 保持原值,然后 b 去替换字典里的数值,a、c 保持原值,c 则以此类推。

Battering Ram

Battering Ram,则是同时将 a、b、c 赋值都用添加的字典去替换尝试。

Pitchfork

Pitchfork 则是需要用户导入三个字典,后依次替换变量。

Cluster Bomb

Cluster Bomb 也需要用户导入三个字典,但是它会把每个字典里的数值都去给变量测试替换一遍,比如 a 变量,字典一测试了字典二和三也会跟上去替换。

Payload

Payload 作用是导入字典的作用:

enter image description here

Simple List

在这个模块下的 Simple List 定义则是最基础的,适合小量数据。

enter image description here

Brute Forcer

Brute Forcer 则是单纯的暴力破解,选择这个模块后它会尝试字典的所有内容。

Options

Options 是 Intruder 最后一个模块,它的功能是线程等功能的设置。

Number of chreads,线程量。

Number of retries on network failure,则是网络故障的重试次数,三次则是重试三次连接。

Pause before retry,重试失败的请求时,Burp 将在重试之前等待失败后的指定时间(以毫秒为单位)。如果服务器被流量淹没,或发生间歇性问题,最好在重试之前等待一段时间,默认值为 2000 毫秒。

Repeater

Repeater 即网页请求头,一般使用这个功能也是通过 Proxy 抓包然后 Send 发送过来的。

主要就是修改请求的各项参数等等然后单击左上角的 Go 发送出去,然后在右边接受到请求,同时在右侧显示请求和状态,多作用于的 HTTP 请求的模糊测试。

enter image description here

        HTTP/1.1 200 OK
    Date: Mon, 08 Jan 2018 08:18:06 GMT
    Content-Type: application/json; charset=utf-8
    Content-Length: 98
    Connection: close
    X-DNS-Prefetch-Control: off
    X-Frame-Options: SAMEORIGIN
    X-Download-Options: noopen
    X-Content-Type-Options: nosniff
    X-XSS-Protection: 1; mode=block
    ETag: W/"62-K/Yyr6AK6b7uRdHNc5GXLA"
    Vary: Accept-Encoding

    {"code":0,"message":"book configration updated successfully.","bookId":"5a521ce5"}

Decoder

enter image description here

Decoder 模块是一个方便的编码器,故此不再多叙述。

Comparer

Comparer 模块是一个文件比较的功能,也非常简单,请读者自行了解。

到这里就已经结束了 Burp 大部分功能,作用于渗透测试和安全评估中会经常使用的功能简介,接下来我们进入一次实战练习。

实战:使用 Burp 破解网站后台密码

在一次安全评估中,笔者找到了这家公司的 OA 系统,使用的是市面绝大多数企业都在用的一款 OA 系统。

enter image description here

看到这个 OA 系统,笔者脑中已经出现了思路,既然是 OA 协同办公,那么应该会有很多员工使用,每个员工的安全意识不同,肯定比破解“admin”的管理员密码方便的多,随之笔者拿出了 Burp 进行抓包分析请求。

    POST /seeyon/ajax.do?method=ajaxAction&managerName=portalManager&rnd=41879 HTTP/1.1
    Host: oa.cxxx.gov.cn
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:45.0) Gecko/20100101 Firefox/45.0
    Accept: application/json, text/javascript, */*; q=0.01
    Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
    Content-Type: application/x-www-form-urlencoded; charset=UTF-8
    X-Requested-With: XMLHttpRequest
    Referer: http://oa.cxxx.gov.cn/seeyon/main.do
    Content-Length: 56
    Cookie: JSESSIONID=6D42D16E9DB70D72FEB708A974FAEA5F; loginPageURL="/main.do"
    Connection: close
  managerMethod=smsLoginEnabled&arguments=%5B%229999%22%5D

登录的 HTTP 请求如下,很有意思使用了 ajax 跨域传输,只传输了我输入的密码“9999”却没找到我的账号请求,一般初学者遇到 ajax 的跨域传输就没辙了,因为做爆破,找不到变量,自然会卡住。笔者略微思索就丢掉了这个包,等传过来后再次抓包。

authorization=&power=1&login_username=9999&login_password=9999&random=&fontSize=12&screenWidth=1920&screenHeight=1080

第二次抓包后,我输入的 username 参数 9999 和 password 参数都传了过来,此时便可以进行暴力破解。

回到刚刚所讲的 Intruder 来进行暴力破解。

enter image description here

设置 username 参数为变量后标黄,设置好参数后添加字典后单击“Start attack”进行暴力破解。

enter image description here

暴力破解的结果如上所示,那么这么多结果我们怎么判断哪一个暴力破解是成功了的呢?

第一个首先看“Length”,返回了字段,这里有 344 和 326 两个字段。

第二个看 Status,这里是显示了 HTTP 状态码,返回 200 即是成功,这里全是 302,自行重定向。

换个思考方式,排查一下字段不同的内容,点击这栏即可,我们放到 Repeater 里去试试重放请求。

HTTP/1.1 302 Found
Set-Cookie: JSESSIONID=DDC97EA21C3122495D2; Path=/seeyon
Set-Cookie: loginPageURL=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT
LoginError: 1
Location: http://oa.cxxx.gov.cn/seeyon/main.do
Content-Length: 0
Date: Mon, 08 Jan 2018 08:42:04 GMT
Connection: close
Server: Seeyon-Server/1.0

上面这是 326 字段重放后的结果。

HTTP/1.1 302 Found
Set-Cookie: JSESSIONID=67FBBC1C52FC832039BD; Path=/seeyon
LoginOK: ok
Set-Cookie: login_locale=""; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/
Location: http://oa.cxxx.gov.cn/seeyon/indexOpenWindow.jsp
Content-Length: 0
Date: Mon, 08 Jan 2018 08:43:58 GMT
Connection: close
Server: Seeyon-Server/1.0

这个则是 344 字段重放之后的结果,通过对比返回字段我想各位读者已经能够清楚的理解哪个才是登录成功了。

enter image description here

登录进入系统后退出该 OA。

对 GitChat 的后台测试

同样的,在对 GitChat 进行的授权测试中,通过 Burp 的 Scan 模块抓取到了 GitChat 的后台,发现是未设置登录验证的情况,即无验证码无访问控制。

enter image description here

当然笔者也测试过了,因为字典的缘故,无法暴力破解成功,所以也不算一个成功的例子。

但是我既然放到这里讲了,就有必要提醒一下,往往一个小的配置不当可能会引起一连串的问题,我可以很肯定的说,给我足够的时间用来执行暴力破解 GitChat 的后台肯定会沦陷,攻击者所需要的只是时间问题,切不可小瞧看似无影响的配置,安全需遵从木桶原理。

另外如果需要抓取 HTTPS 流量,需要配置一张中间人证书在你的浏览器里,配置方法是打开 Burp 后在浏览器里输入 http://burp 回车即可弹出页面进行下载证书,随后安装在计算机根证书里即可。

Burp 抓取 APP 应用流量:请查看博客,配置也比较方便简单,IOS 同理。

下面是个小小的广告,可能会伤害你的身心健康。

我创建了一个微信公众号:黑客与思考(rNma0y),可以关注一下下,顺便给我涨涨粉(233333)。

Burp Suite 的下载地址可以公众号回复:“Burp Suite下载”会推送给你,单击下载地址链接,密码:or5s

Burp 作为一款 Web 扫描器可以说是非常的出色,检查 SQL 注入,XSS 和其他安全漏洞均可以使用这款工具完成。如果读者有什么疑问可以在读者圈与我联系,同时想继续深入了解什么内容也可以联系我,我会斟酌考虑出此类文章教程。


本文首发于 GitChat 平台,未经授权不得转载,转载需与 GitChat 平台联系。

上一篇
下一篇
目录