




————————————————
“最怕我已经做好了独自前行的准备时,远方又寄来了一抹握不住的温柔。”
启言:
今天这篇文章主要讲的是burpsuite的使用,当然可能并不完善,更多细节的操作还需要在实战中慢慢熟练。

环境准备
Burp工具介绍:burpsuite是用于攻击web应用程序的集成平台,包含了很多工具。
1. Spider(蜘蛛)--burpsuite的蜘蛛功能是用来抓取web应用程序的链接和内容等,它会自动提交登录表单(通过用户自定义输入)的情况下,burpsuite的蜘蛛可以爬行扫描出网站上所有的链接,通过对这些链接的详细扫描来发现web应用的漏洞。
2. Scanner(扫描器)--它是用来扫描web应用程序漏洞的,在测试的过程中可能会出现一些误报。重要的是要记住,自动扫描器扫描的结果不可能完全准确。
3. Intruder(入侵)--此功能有多种功能,如利用漏洞,web应用程序模糊测试,进行暴力猜解等。
4. Repeater(中继器)--此功能用于根据不同的情况修改和发送相同的请求次数并分析。
5. Sequencer--此功能主要用来检查web应用程序提供的会话令牌的随机性,并执行各种测试。
6. Decode(解码)--此功能用于解码数据找回原来的数据形式,或者进行编码和加密数据。
7. Comparer--此功能用来执行任意的两个请求,响应或任何其他形式的数据之间的比较。
Burp的安装需要java环境,然后配置环境变量,再启动burp就可以了。
Burrp下载:(放在天翼云盘上的,因为它比较快,而且不要钱)版本是v2.0.11
https://cloud.189.cn/t/
ZzMrA3IjAnmm (访问码:5awt)

Burp没有密钥是要收费的,在云盘上我加上了一个密钥生成器可以破解,具体破解的步骤网上很多,推荐一篇:
http://www.xue51.com/soft/
36653.html
burpsuite使用1
Burp基本功能介绍
Burp初始化:restore的中文意思是恢复,即当你想恢复默认设置时,可以点击恢复

Burp编码转换:下图中选项3的位置是设置编码,默认是识别消息头来设置。
Burp设置字体:下图中选项2的位置是设置字体。
Burp设置输出编码:下图中选项1的位置是设置用户抓包时显示数据的编码格式,比如说你近视,就可以把字体调大一些。

Burp改标题名:点击project,选择下拉列表中的rename project即可更改标题名。

Burp设置端口:如下图所示。

Burp抓包:先在浏览器端设置代理(端口注意和前一步的端口要一致),再在burp中抓包,对包进行控制通过箭头指向的forward,drop。Intercept is on 表示开启抓包。


利用repeater模块发送请求:在空白处点击鼠标右键,选择send to repeater即可把请求发送到repeater模块,再进入repeater模块,即可进行后续操作。

(画的比较乱,sorry拉)Go表示发送请求,请求cancle表示取消,之后的两个是表示请求的前一个和后一个,右边这个可以点击修改发送的是http请求(80),还是https请求(443),
下面request表示请求区域,下面一行是表示方式,可以自己点击尝试,右边是response表示返回区域。


burpsuite使用2
对目标网站进行爬取(spider)和扫描(scan)(注意,爬取是获得目标网站的目录结构,扫描是根据漏洞库(事件)来判断是否存在漏洞):空白处点击鼠标右键,再点击scan进行扫描。

1处表示扫描目标,2处可以对扫描进行配置。

扫描结果点击target模块可以进行查看:1处表示扫描目标的树状目录结构,2处是扫描过程发包的具体过程,3处是扫描发现的漏洞(事件)。

点击红色圆圈范围处,会弹出一个选择框,可以在此根据请求类型,数据类型,返回状态码,文件后缀名等对扫描到的内容进行筛选(filter)。

扫描模块下有三个子模块,另外两个一个是scope(范围),一个是issue definitions(事件定义),scope下的位置1表示扫描结果的白名单编辑(编辑允许在site map子模块展示的内容),位置2表示扫描结果的黑名单编辑(编辑不允许在site map子模块展示的内容),issue definitions表示的是扫描的漏洞库(事件)有哪些,感兴趣的可以自己点击查看。

burpsuite使用3
对目标网站的登录表单进行爆破(intrude):在浏览器的表单上输入内容,点击登录,burp这边显示抓到包。

点击send to intrude,将数据包发送至intrude模块。

Intrude模块下有四个子模块:分别是target(爆破目标信息),position(爆破目标的爆破位置的设置和爆破方式的选择),payloads(爆破字典的装载和自定义爆破数据等),options(爆破选项,在这里可以对爆破发送的请求包的线程,失败次数,发送延迟,爆破结果的正则筛选进行设置。)常用的模块就是position和payload。

首先对四种爆破模式(attack type)进行简述:
Sniper 对变量进行依次破解
Battering ram 对变量进行同时破解
Pitch fork 每个变量将会对应一个字典
Cluster bomb 每个变量对应一个字典,并且会交集破解尝试每一个组合
常用的是sniper和cluster bomb,当然,看自己的需要。

下图中由$符号包裹,且带不同颜色的位置标示爆破的位置,一般先点击右边箭头指向的clear清除预先选择的爆破位置,然后根据自己的需要(一般是用户名和密码),用鼠标选中需要爆破的位置,然后点击add进行添加即可。

如下图所示:注意,在这里,选择sniper之后的话,再点击payload子模块,爆破装载字典的话只有一个位置,因为sniper爆破是变量一个一个来,而选择cluster bomb的话,爆破的位置有多个,因为它表示多个变量一起爆破,而且是交叉爆破。下图是选择cluster bomb。

点击payload子模块,发现存在两个爆破位置,可依次进行设置。在下方可以通过paste粘贴字典数据,load装载字典数据,remove清除单个数据,clear清除字典数据(全部),add增加单个数据。

还有一个比较常用的就是对装载的字典数据进行编码,当抓包后,传输的数据不是明文时,就必须要通过编码进行爆破。选择编码方式,在payload子模块往下拉,在payload processing区域可以点击add添加编码方式,我这里添加的是base64的编码。

设置完成后,点击start attack即可进行爆破:

对爆破的结果页面做一个解释:attack可以选择暂停爆破或者重开一个界面进行爆破,save可以对爆破结果进行存储,columns可以设置哪些列展示在爆破结果中;下层的filter可以对爆破结果做进一步的过滤;再下面就是爆破结果,每一行表示一个请求,一般可以通过比较length的长度来判断哪个请求是成功的,点击箭头指向的length可以对长度进行排序,方便在较长的结果中找到所需多的内容。

当然,通过长度来判断是否爆破成功,本质上是因为登录账号密码正确和错误的页面,它们返回包长度是不一样的,但在实际情况中,还会存在很多其他情况,比如登录错误它返回包的长度可能不会一直是一个长度,这样可能会让你误以为是爆破成功了,当然你也可以通过产看返回包来做进一步的判断,但更简便的是通过正则来过滤返回包的内容:如下所示
点击option,往下拉找到 grep-extract,点击add添加新的正则规则:

点击(打钩)右边的extavt from regex group,再点击refetch reponse,再在下面选择你想要选择的内容(一般选择的是,当你成功登陆或者错误登陆时,返回包中的提示语句),然后点击ok几个。(注意,extrac from regex group 下的正则内容是当你选择了下方请求包内容后自动添加的正则,当然,如果你正则掌握的比较好,你也可以自己添加)。

再次点击start attack,就可以在下图中看到,我们自定义的正则列出现在了爆破结果中,可以点击它进行排序。(注意:显示的结果出现乱码,是因为是中文,可以通过前面讲的修改编码方式来让结果显示正确)


burpsuite使用4&总结
最后再讲两个模块,comparer模块和decoder模块:comparer模块可以用来比较包(请求包,返回包)内容之间的不同之处,decoder模块就是用来对数据进行编码和解码:
如下图所示,拦截数据包,并点击send to comparer,将其送到comparer模块中;随意点击其他一个页面,并重复此操作。

可以看到在comparer模块下存在1,2两个请求,可以通过点击word或者bytes从不同方面去对两个请求进行比较:

Word:

Bytes:

点击decoder模块即可进行编码或者解码,这个属于在构造特殊的请求包的时候的一种辅助手段。

总结:burpsuite是个集成化的工具,分为不同的模块,每个模块又分为不同的子模块,使用过程中,我们要注意模块之间的搭配,当然,burpsuite还有很多操作我还没讲到,比如它的扩展怎么设置,这部分大家可以在熟悉了基本操作之后,再去进一步的学习。
“将军百战身名裂。向河梁、回头万里,故人长绝。易水萧萧西风冷,满座衣冠似雪。”
1
END
1




