目录导航
Burp Scanner
Burp Scanner 的功能主要是用来自动检测web系统的各种漏洞,我们可以使用Burp Scanner代替我们手工去对系统进行普通漏洞类型的渗透测试,从而能使得我们把更多的精力放在那些必须要人工去验证的漏洞上。
在使用Burp Scanner之前,我们除了要正确配置Burp Proxy并设置浏览器代理外,还需要在Burp Target的站点地图中存在需要扫描的域和URL模块路径。如下图所示: 当Burp Target的站点地图中存在这些域或URL路径时,我们才能对指定的域或者URL进行全扫描或者分支扫描。下面我们就来整体的学习一下,一次完整的Burp Scanner使用大概需要哪些步骤。
本章的主要内容有:
- Burp Scanner基本使用步骤
- Burp Scanner扫描方式
- Burp Scanner扫描报告
- Burp Scanner扫描控制
- Burp Scanner可选项设置
Burp Scanner基本使用步骤
Burp Scanner基本使用主要分为以下15个步骤,在实际使用中可能会有所改变,但大体的环节主要就是下面的这些。 1.确认Burp Suite正常启动并完成浏览器代理的配置。 2.进入Burp Proxy,关闭代理拦截功能,快速的浏览需要扫描的域或者URL模块。 3.当我们浏览时,默认情况下,Burp Scanner会扫描通过代理服务的请求,并对请求的消息进行分析来辨别是非存在系统漏洞。同时,当我们打开Burp Target时,也会在站点地图中显示请求的URL树。 4.我们可以有针对性的选择Burp Target站点地图下的某个节点上链接URL上,弹出右击菜单,进行Active Scan。然后在弹出的确认框中,点击【YES】即进行扫描整个域。 6.这时,我们打开Burp Scanner 选项卡,在队列子选项卡中,会看到当前扫描的进度。如果我们双击URL,则弹出扫描结果的提示信息。 7.如果我们在Burp Target站点地图下选择某个子目录进行扫描,则会弹出更优化的扫描选项,我们可以对选项进行设置,指定哪些类型的文件不再扫描范围之内。
Burp Scanner扫描方式
通过以上的操作步骤我们可以学习到,Burp Scanner扫描方式主要有两种:主动扫描和被动扫描
- 主动扫描(Active Scanning)
当使用主动扫描模式时,Burp 会向应用发送新的请求并通过payload验证漏洞。这种模式下的操作,会产生大量的请求和应答数据,直接影响系统的性能,通常使用在非生产环境。它对下列的两类漏洞有很好的扫描效果:
- 客户端的漏洞,像XSS、Http头注入、操作重定向;
- 服务端的漏洞,像SQL注入、命令行注入、文件遍历。
对于第一类漏洞,Burp在检测时,会提交一下input域,然后根据应答的数据进行解析。在检测过程中,Burp会对基础的请求信息进行修改,即根据漏洞的特征对参数进行修改,模拟人的行为,以达到检测漏洞的目的。 对于第二类漏洞,一般来说检测比较困难,因为是发生在服务器侧。比如说SQL注入,有可能是返回数据库错误提示信息,也有可能是什么也不反馈。Burp在检测过程中,采用各个技术来验证漏洞是否存在,比如诱导时间延迟、强制修改Boolean值,与模糊测试的结果进行比较,已达到高准确性的漏洞扫描报告。
- 被动扫描(Passive Scanning)
当使用被动扫描模式时,Burp不会重新发送新的请求,它只是对已经存在的请求和应答进行分析,这对系统的检测比较安全,尤其在你授权访问的许可下进行的,通常适用于生成环境的检测。一般来说,下列这些漏洞在被动模式中容易被检测出来:
- 提交的密码为未加密的明文。
- 不安全的Cookie的属性,比如缺少的HttpOnly和安全标志。
- cookie的范围缺失。
- 跨域脚本包含和站点引用泄漏。
- 表单值自动填充,尤其是密码。
- SSL保护的内容缓存。
- 目录列表。
- 提交密码后应答延迟。
- session令牌的不安全传输。
- 敏感信息泄露,像内部IP地址,电子邮件地址,堆栈跟踪等信息泄漏。
- 不安全的ViewState的配置。
- 错误或者不规范的Content-type指令。
虽然被动扫描模式相比于主动模式有很多的不足,但同时也具有主动模式不具备的优点,除了前文说的对系统的检测在我们授权的范围内比较安全外,当某种业务场景的测试,每测试一次都会导致业务的某方面问题时,我们也可以使用被动扫描模式,去验证问题是否存在,减少测试的风险。
Burp Scanner扫描报告
当我们对一个系统进行扫描完毕后,通常需要生成扫描报告,Burp Scanner支持的报告类型有HTML和XML两种格式。无法何种格式的扫描报告,其内容基本一致,主要由以下部分组成。报告样例可以点击 这里 查看.
除了头部的综述和目录外,每一个漏洞的章节通常包含: 1.序号 表示漏洞的序号,如果有多个同样的漏洞,报告中只会有一个序号。 2.漏洞的类型,可以近似地理解与OWASP的类型相对应。 3.漏洞名称,具体可参考 Issue Definitions子选项卡。 4.漏洞路径,漏洞对应的多个URL链接。 5.漏洞的发生点,通常为参数名。 6.问题的描述(Issue background) 描述漏洞发生的成因 7.解决建议(Remediation background)提供解决的思路和建议 8.请求消息和应答消息的详细信息。
如果我们想对某次的扫描结果进行保存,需要Burp Target 的站点地图子选项卡的问题面板(Issue)上右击,在弹出的菜单中选择report Issues进行设置并保存即可。(注意,如果想导出所有的漏洞,需要选中所有的问题列表) 具体导出漏洞报告的步骤如下: 1.选中需要保存的漏洞,右击弹出菜单,如下图: 2.在弹出的对话框中选择需要保存的漏洞报告格式。 3.选择漏洞明细包含内容。 4.请求消息和应答消息设置。 5.选择报告包含的哪些漏洞。
Burp Scanner扫描控制
在对系统做主动扫描时,当我们激活Burp Scanner,扫描控制的相关设置也同时开始了。如下图所示,当我们在Burp Target 的站点地图上的某个URL执行Actively scan this host时,会自动弹出过滤设置。 在这里,我们可以设置扫描时过滤多媒体类型的应答、过滤js、css、图片等静态资源文件。当我们点击【next】按钮,进入扫描路径分支的选择界面。如下图:
以上是Burp Scanner开始扫描前的控制,当我们设置完这些之后,将正式进入扫描阶段。此时,在Scan queue队列界面,会显示扫描的进度、问题总数、请求数和错误统计等信息。 在此界面上,我们可以选中某个记录,在右击的弹出菜单中,对扫描进行控制。比如取消扫描、暂停扫描、恢复扫描、转发其他Burp组件等。如下图:
另外,在Live Scanning选项卡中,我们也可以对请求的域、路径、IP地址、端口、文件类型进行控制,如下图: 如果你选中了Use suite Scope,则指定条件与你在Burp Target中的Scope配置完全一致,如果你选择了Use customs scope,则可以自己定义Scope,对于Scope的详细配置,请参考Burp Target中的Scope配置相关章节。
Burp Scanner可选项设置
通过前几节的学习,我们已经知道Burp Scanner有主动扫描和被动扫描两个扫描方式,在Options子选项卡中,主要是针对这两种扫描方式在实际扫描中的扫描动作进行设置。具体的设置包含以下部分:
- 攻击插入点设置(Attack Insertion Points) Burp Scanner在扫描中,基于原始的请求消息,在每一个插入点构造参数,对原数据进行替换,从而去验证系统漏洞的存在性。通常,以下位置都会被Burp Scanner选择为插入点。
- URL请求参数
- Body参数(比如form表单的值,上传文件、XML参数、JSON参数)
- Cookie参数
- 参数的名称和个数(通过增加参数个数或者增加参数来验证漏洞)
- Http Header信息(通过对header信息的篡改来验证漏洞)
- AFM编码(对flash通信漏洞的验证)
- REST风格的参数
对于以上的攻击插入点,Burp Scanner还是可以通过改变参数的位置来验证漏洞,Burp Scanner中共有URL to body 、URL to cookie、Body to URL、Body to cookie、Cookie to URL、Cookie to body 六种方式。当我们在扫描验证中,可以根据实际请求,灵活选择位置改变的组合,高效快速地验证漏洞。但我们也应该明白,当我们选中了位置改变来验证漏洞,即选择了Burp发送更多的请求,如果是在生成系统中的测试需要慎重。
另外,Burp的攻击插入点也支持嵌套的方式,这意思是指,如果一个请求的参数值是JSON对象或者XML文本,Burp Scanner在扫描时,可以对JSON对象或XML文本中的属性、属性值进行验证,这会极大地提高了Burp Scanner对漏洞扫描的涉及面。这是由上图中的use nested insertion points的checkbox是否选中去控制的,默认情况下是选中生效的。
当我们设置攻击插入点的同时,我们也可以指定哪些参数进行跳过,不需要进行漏洞验证。在设置时,Burp是按照服务器端参数跳过和所有参数均跳过两种方式来管理的,界面如下图:
2 主动扫描引擎设置(Active Scanning Engine) 主动扫描引擎设置主要是用来控制主动扫描时的线程并发数、网络失败重试间隔、网络失败重试次数、请求延迟、是否跟踪重定向。其中请求延迟设置(Throttle between requests)和其子选项延迟随机数 (Add random variations to throttle)在减少应用负荷,模拟人工测试,使得扫描更加隐蔽,而不易被网络安全设备检测出来。 至于这些参数的具体设置,需要你根据服务器主机的性能、网络带宽、客户端测试机的性能做相应的调整。一般来说,如果您发现该扫描运行缓慢,但应用程序表现良好,你自己的CPU利用率较低,可以增加线程数,使您的扫描进行得更快。如果您发现发生连接错误,应用程序正在放缓,或你自己的电脑很卡,你应该减少线程数,加大对网络故障的重试次数和重试之间的间隔。
3.主动扫描优化设置(Active Scanning Optimization)
4.主动扫描范围设置(Active Scanning Areas) 在主动扫描过程中,你可以根据你的扫描时间、关注的重点、可能性存在的漏洞类型等情况,选择不同的扫描范围。这里可选择的扫描范围有:
- SQL注入 -可以使不同的测试技术(基于误差,时间延迟测试和布尔条件测试),并且也使检查所特有的单独的数据库类型(MSSQL,Oracle和MySQL的)。
- 操作系统命令注入 – (信息通知和盲注)。
- 反射式跨站点脚本
- 存储的跨站点脚本
- 文件路径遍历
- HTTP头注入
- XML/ SOAP注入
- LDAP注入
- URL重定向
- http消息头可操纵
- 服务器的问题
5.被动扫描范围设置(Passive Scanning Areas) 因为被动扫描不会发送新的请求,只会对原有数据进行分析,其扫描范围主要是请求和应答消息中的如下参数或漏洞类型:Headers、Forms、Links、Parameters、Cookies、MIME type、Caching、敏感信息泄露、Frame框架点击劫持、ASP.NET ViewState 。
更多请查看 burpsuite专栏