Burp Suite
Burp Suite的简单使用
~1.1Burp Suite入门
Burp Suite代理工具是以拦截代理的方式,拦截所有通过代理的网络流量,如客户端的请请求数据、服务器端的返回信息等。Burp Suite主要拦截HTTP和HTTPS协议的流量,通过拦截,Burp Suite以中间人的方式对客户端的请求数据、服务端的返回信息做各种处理,以达到安全测试的目的。
——1.1.1Proxy
Burp Proxy的拦截功能主要由Intercept选项卡中的Forward、Drop、Intercept is on/off和Action构成,它们的功能如下所示:
·Forward表示将拦截的数据包或修改后的数据包发送至服务器端
·Drop表示丢弃当前拦截的数据包
·Intercept is on表示开启拦截功能,单击后变为Intercept is off,表示关闭拦截功能
·单击Action按钮,可以将数据包进一步发送打Spider、Scanner、Repeater、Intruder等功能组件做进一步的测试,同时也包含数据包请求方式及其body的编码功能。
当Burp Suite拦截了客户端和服务器交互之后,我们可以在Burp Suite的消息分析选项中查看这次请求的实体内容、消息头、请求参数等信息。Burp有四种消息类型显示数据包:
·Raw:主要显示web请求的raw格式,以纯文本的形式显示数据包,包含请求地址、http协议版本、主机头、浏览器信息、Accept可接受的内容类型、字符集、编码方式、cookie等,可以通过修改这些信息,对服务器端进行渗透测试。
·Params:主要显示客户端请求的参数信息,包括GET或者POST请求的参数、cookie参数。可以通过修改这些请求参数完成对服务器端的渗透测试。
·Headers:显示的是数据包中的头信息,以名称、值的形式显示数据包。
·Hex:对应的是Raw中信息的十六进制内容,可以通过Hex编辑器对请求的内容进行修改,在进行00截断时非常好用。
——1.1.2Spider
Spider的蜘蛛爬行功能可以帮助我们了解系统的结构,其中Spider爬取到的内容将在Target中展示
——1.1.3Decoder
Decoder的功能比较简单,它是Burp中自带的编码解码及散列转换的工具,能对原始数据进行各种编码格式和散列的转换。
编码解码选项由解码选项(Decode as)、编码选项(Encode as)、散列(Hash)构成。
~1.2Burp Suite进阶
——1.2.1Scanner
Burp Scanner主要用于自动检测web系统的各种漏洞,我们可以在Burp Target的站点地图下选择一个在其连接URL右击选择“Actively scan this host”,此时会弹出过滤设置,保存默认选择即可扫描整个域,也可以在Proxy下的HTTP history中,选择某一个节点上的链接URL并右击选择Do an active scan进行扫描,我们也可以在扫描结果中选中需要进行分析的部分,将其发送到repeater模块中进行模拟提交分析和验证。
当Scanner扫描完成后,可以右击Burp Target站点地图选项下的链接,依次选择“issues”->“Report issues”选项,然后导出漏洞报告。
Burp Scanner主要有两种扫描方式:
·主动扫描(Active Scanning)
当使用主动扫描时,Burp会向应用发送新的请求并通过payload验证漏洞。这号模式下的操作会产生大量的请求和应答数据,直接影响服务器的性能,通常用于非生产环境,主动扫描适用于以下这两类漏洞:
-客户端的漏洞,如xss,HTTP头注入,操作重定向。
-服务器的漏洞,如SQL注入、命令行注、文件遍历。
·被动扫描(Passive Scanning)
当使用被动扫描方式时,Burp不会重新发送新的请求,只是对已经存在的请求和应答进行分析,对服务器的检测来说,这比较安全,通常适用于生产环境的检测。一般来说,下列漏洞在被动模式中容易被检测出来:
-提交的密码为未加密的明文
-不安全的cookie的属性,例如缺少HttpOnly和安全标志
-cookie的范围缺失
-跨域脚本包含和站点引用泄露
-表单值自动填充,尤其是密码
-SSL保护的内容缓存
-目录列表
-提交密码后应答延迟
-session令牌的不安全传输
-敏感信息泄露,例如内部IP地址、电子邮件地址、堆栈跟踪等信息泄露
-不安全的ViewState的配置
-错误或不规范的Content-Type指令
虽然被动扫描模式相比主动模式有很多不足,但同时也具有主动模式不具备的优点。除了对服务端的检测比较安全,当某种业务场景的测试每次都会破坏业务场景的某方面功能时,可以使用被动扫描模式验证是否存在漏洞,以减少测试的风险
——1.2.2Intruder
Intruder是一个定制的高度可配置的工具,可以对web应用程序进行自动化攻击,如通过标识符枚举用户名、ID和账户号码,模糊测试,SQL注入,跨站,目录遍历等
它的工作原理是Intruder在原始数据的基础上,通过修改各种请求参数获取不同的请求应答。在每一次请求中,Intruder通常会携带一个或多个攻击载荷(payload),在不同的位置进行攻击重放,通过应答数据的比对分析获得需要的特征数据。Burp Intruder通常被应用于以下场景:
·标识符枚举。web应用程序经常使用标识符引用用户、账户、资产等数据信息。例如,用户名、文件id和账户号码。
·提取有用的数据。在某些场景下,不是简单地识别有效标识符,而是通过简单标识符提取其他数据。例如,通过用户的个人空间ID获取所有用户在其个人空间的名字和年龄。
·模糊测试。很多输入性的漏洞(如SQL注入、xss和文件目录遍历)可以通过请求参数提交各种测试字符串,并分析错误消息和其他异常情况,来对应用程序进行检测。受限于应用程序的大小和复杂性,手动执行这个测试是一个耗时且繁琐的过程,因此可以设置payload,通过Intruder自动化地对应用程序进行模糊测试。
爆破类型:
·Sinper模式使用单一的payload组。他会针对每个位置设置payload。这种攻击类型适用于对常见漏洞中的请求参数单独进行Fuzzing测试的情景。攻击中的请求总数应该是position数量和payload数量的乘积。
·Battering ram模式使用单一的payload组。它会重复payload并一次性把所有相同的payload放入指定的位置中。这种攻击适用于需要在请求中把相同的输入放到多个位置的情景。请求的总数是payload组中payload的总数。
·Pitchfork模式使用多个payload组。攻击会同步迭代所有的payload组,把Payload放入每个定义的位置中。这种估计类型非常适合在不同位置中需要插入不同但相似输入的情况。请求的数量是最小的payload组中的payload数量。
·Cluster bomb模式会使用多个payload组。每个定义的位置中有不同的payload。攻击会迭代每个payload组,每种payload组合都会被测试一遍。这种攻击适用于在位置需要不同且不相关或者未知输入估计的情景。攻击请求的总数是各payload组中payload数量的乘积。
这里对Status或Length的返回值进行排序,查看是否有不同之处。
——1.2.3Repeater
Burp Repeater是一个手动修改、补发个别HTTP请求,并分析它们响应的工具。它最大的用途就是能和其他Burp Suite工具结合起来使用。可以将目标站点地图、Burp Proxy浏览记录、Burp Intruder的攻击结果,发哦送到Repeater上,并手动调整这个请求来对漏洞的探测或攻击进行微调。
Repeater分析选项由4种:
·Raw:显示纯文本格式的信息,在文本面板的底部有一个搜索和加亮的功能,可以用来快速定位需要寻找的字符串,如出错消息。利用搜索栏左边的弹出项,能控制状况的灵敏度,以及是否使用简单文本或十六进制进行搜索。
·Params:对于包含参数(URL查询字符串、cookie头或者消息体)的请求,Params选项会把这些参数显示为名字/值的格式,这样就可以简单地对它们进行查看和修改了。
·Headers:将以名字/值的格式显示HTTP的消息头,并且以原始格式显示消息体。
·Hex:允许直接编辑由十六进制组成的消息。
在渗透测试过程中,我们经常使用Repeater进行请求与响应的消息验证分析,例如修改请求参数、验证输入的漏洞和验证逻辑越权;从拦截历史记录中,捕获特征性的请求消息进行请求重放
——1.2.4Comparer
Burp Comparer在Burp Suite中主要提供一个可视化的差异比对功能,来对比分析两次数据之间的区别,使用到的场合有:
·枚举用户名的过程中,对比分析登陆成功和失败时,服务端反馈结果的区别。
·使用Intruder进行攻击时,对于不同的服务端的响应,可以很快分析出两次响应的区别。
·进行SQL注入的盲注测试时,比较两次响应消息的差异,判断响应结果与注入条件的关联
Comparer数据加载的常用方式如下:
-从其他Burp工具通过上下文菜单转发过来(比如Intruder)
-直接粘贴
-从文件里加载
加载两次请求后,下发的按钮被激活,可以选择文本比较或字节比较
——1.2.5Sequencer
Burp Sequencer是一种用于分析数据样本随机性质量的工具。可以用它测试应用程序的会话令牌(Session token)、密码重置令牌是否可预测等场景,通过Sequencer的数据样本分析,能很好地降低这些关键数据被伪造的风险。
Sequencer主要由信息截取(Live Capture)、手动加载(Manual Load)和选项分析(Analysis Options)三个模块组成。