Burp Scanner Help
Burp Scanner是一个进行自动发现 web应用程序的安全漏洞的工具。它是为渗透测试人员设计的,并且它和你现有的手动执行进行的 web应用程序半自动渗透测试的技术方法很相似。
使用的大多数的 web扫描器都是单独运行的:你提供了一个开始 URL,单击”go”,然后注视着进度条的更新直到扫描结束,最后产生一个报告。Burp Scanner和这完全不同,在攻击一个应用程序时它和你执行的操作紧紧的结合在一起。让你细微控制着每一个扫描的请求,并直接反馈回结果。
Burp Scanner可以执行两种扫描类型:
1. Active scanning扫描器向应用程序发送大量的伪造请求,这些请求都是有一个基础请求衍生出来的,然后通过分析响应结果来查找漏洞特征。
2.Passive scanning扫描器不发送他自己的任何新请求,只分析现有的请求和响应的内容,从这些信息中推断出漏洞。
你可以在目标应用程序使用两种不同方式:
1.Manual scanning你可以发送其他 Burp工具的一个或多个请求,来对这些特定的请求执行主动或被动的扫描。
2. Live scanning as you browse你可以配置扫描器来自动执行主动或被动的扫描那些你浏览应用程序时经过代理的请求。
这种自动探测漏洞的方法给渗透测试人员带来了几点好处:
1.通过逐个的请求,能快速可靠地对常规的漏洞进行扫描,这很大程度地减少你的测试精力,还能使你对那些不能进行自动可靠地探测的漏洞直接使用个人经验来判断。
2.每种扫描的结果会被立即显示出来,并通报出在这个请求中包含的其他的测试操作。
3.Burp避免了其他扫描器的令人沮丧的问题,进行一次自动扫描需要 1年的时间,并还不能保证扫描是否有效,或者是否遇到了影响扫描效率的问题。
Burp精准地控制着要扫描的内容,并对扫描结果和应用程序上的广范围的影响进行实时监控,Burp Spider让你把可靠自动化的优点和人类直观智慧结合起来,常常会得到压倒性的结果。
主动扫描(Active scanning)
在这种扫描模式下,Burp使用应用程序的一个叫做” base request”单个请求,通过一些方法修改后,来触发一些漏洞存在的迹象。这些被修改过的请求被发送到应用程序,然后分析响应的结果。在许多情况下,根据初步探测的结果,会发送进一步的请求。这种操作模式会产生大量的恶意的请求,并导致应用程序妥协。你要谨慎地使用这种扫描模式,仅当得到应用程序的所有者允许时,并且警告过他们自动扫描会给他们的应用程序和数据带来影响。如果可能,扫描不用的系统,并在扫描前进行备份。
对应用程序中的已知缺陷的漏洞的自动探测是很可靠的。Burp的主动扫描能力的是为
扫描器能可靠地查找到基于输入的漏洞而设计的。为了避免在其他地方产生的误报, Burp
在他的输出上给了你自信,让你集中精力到那些需要提供人类经验和智慧的工作上。
Burp主动扫描能确认的问题大体上可分为下面 2类:
1.在客户端上的输入漏洞,如:跨站点脚本,HTTP消息头注入,开放重定向。
2.在服务端的输入漏洞,如:SQL注入,操作系统命令注入,文件路径遍历。
可以以非常高的可靠度探测到第 1类的问题。在大多数情况下,在客户端上,和查找漏洞相关的任何事情都是可见的。例如,为了探测反射型 XSS,Burp Scanner会在应用程序的每个入口点提交一些良性的输入,并查看回复的响应。如果有回复,Burp会解析出响应的内容来确定回复显示的上下文。然后通过许多修改的输入来确定在上下文里组成一个攻击的字符串是否被回复了。Burp Scanner有打破输入过滤的广泛能力,并且绕过 web服务器的相关设置,来检查所有使用的上下文。通过先前检查的反馈对决策树进行全面检查,Burp能高效地模拟一个富有经验并且有条不紊的测试人员的检测行为,如一个输入封装计划。第 2类问题本来就不适合使用自动化手段探测,因为大多数情况下和漏洞有关的行为只能发生在服务端,客户端能看到的现象太少。例如,SQL注入漏洞会在响应中返回详细的数据库错误,或者完全地被遮盖。Burp Scanner使用许多技术来确认盲服务端注入问题,有延时,改变布尔条件,以及执行模糊的响应比较,等等。此时这些技术会比用在第 1类问题时产生更多的错误。然而,Burp Sanner在这里却实现了一个高的成功率,能可靠地发现许多问题,这对测试人员来说是费力的或者困难的来进行诊断。
被动扫描(Passive scanning)
在这种模式下,Burp不会向服务器发送任何新的请求。它只分析现存的请求和响应,并从中推断出漏洞。在你访问的任何授权应用程序,使用这种操作模式是安全和合法的。
只使用这种被动的技术,Burp Scanner能发现几种漏洞,有:
1.明文提交的密码。
2.不安全的 cookie属性,如丢失 HttpOnly和安全标志。
3.开放的 cookie范围。
4.跨站点脚本泄露 Referer信息。
5.自动填充的表单。
6.SSL保护的缓冲区内容。
7.目录遍历。
8.提交的密码会在后面返回的响应中。
9.不安全的会话令牌传输。
10.信息泄露,如互联网 IP地址,电子邮件地址,堆栈跟踪,等。
11.不安全的视图配置。
12.不清楚的,没完成的,不正确或不标准的内容类型指示。
这些问题都是相对平淡的,对我们来说记录它们显得无聊和重复。但是作为一个渗透测试人员,有人责任指出它们。在你浏览应用程序一次时,Burp Scanner既然可靠地扫描出这些问题,你就应该理智清楚它们。
在下面的一些情况,只进行被动的扫描是有好处的:
1.因为被动扫描不必向应用程序发送任何新的请求,你就可以安全地用在重要的应用程序上,你可以完全地控制发送的每一个请求。
2.有些应用程序对攻击的反应是很气愤的,当收到一个恶意的请求时,会终止你的会话或者锁定你的账号。在这种情况下,只能一次次地进行手工测试,这时你可以通过被动扫描来确认许多问题,而不会出现麻烦。
3.如果你没被授权进行攻击一个目标,你可以像普通用户那样浏览应用程序使用被动扫描来确认漏洞。如果你提出了一个新的渗透测试方案,你可以通过被动扫描你的目标来获得对安全状态的了解,甚至在你进行测试之前,有希望发现一些公布的问题。
开始扫描(Initiating scans)
Manual scanning在 Burp Suite的任何地方的都可以把一个或多个 HTTP请求发送到Scanner执行主动或被动的扫描。例如,你使用 Burp Proxy拦截下一个感兴趣的请求,你可以通过使用上下文菜单,只对这一个请求进行扫描:
同样地,你可以选择目标站点地图上或者历史记录里的一系列的请求,把它们发送到Scanner上。因此,在浏览完应用程序一圈并建立起它内容的全面地图后,你就可以告诉 Burp扫描应用程序功能的特定区域:
如果你选择了多个项并把它们发送到主动扫描,Burp会启动一个简洁的向导,让你微调你的选择。向导的第一个画面为你提供了许多直观的过滤器来删除那些需要的潜在项 (重复的,已经扫描过的,媒体内容,等等),以及显示过滤器影响到的项有多少:
第二个向导画面向显示了剩下项的表单,你可以使用多种相关的属性对表格进行排序,查看所有的请求和响应,以及删除单个项:
这时向导设置已经完成,以平常方式来对这些选中进行扫描。
Live scanning可以使用另一种方式—”live scanning”来执行扫描。在这种模式下,你告诉 Burp你使用主动或被动扫描的目标范围,然后它会自动启动扫描,对你使用应用程序产生的相关请求进行主动或被动的扫描。当使用这种模式操作时,你需要作为一个普通用户简单地把应用程序访问一圈,向 Burp显示出应用程序内容和功能的位置,然后它就会在后台进行查找漏洞。
当使用现场扫描时,你细微地控制着 Burp将要自动地扫描的请求。如果你已经为你的
工作配置一个目标范围,然后你可以简单地告诉 Burp扫描属于范围内的每一个请求。另外,你可以自定义一个用来主动和被动的扫描范围。在下面的这个例子里,Burp配置为使用主动扫描发送到 www.myapp.com的每一个请求,除了登陆请求,使用被动扫描发送到其他目的地的任何请求:
注意现场扫描会忽略对媒体(图像,等)资源的请求,在这些资源里请求不包含非 cookie参数。这些请求的静态资源几乎不会有任何安全问题,所以扫描器会忽略它们。 (这对手动扫描无效—如果你手动地选择了这样的一些项,并把它们发送到主动扫描,这时它们当然会通过正常的发送被扫描了)。
Active scan queue当你发送请求到主动扫描时,它们会被立即处理。因为主动扫描会像服务器发送大量的请求,发送的请求会被添加到一个队列里。一个有许多参数的经典请求会在 1到 2分钟内扫描完,扫描队列通过配置的线程池来扫描,所以等待扫描项的数目会变得非常大。当每一项都被扫描完时,扫描队列表会显示出它的进展——发出的请求数,完成百分比,确认的漏洞。根据接近最严重问题的可信度和严重性,把项的最后的值图成了彩色:
你可以双击扫描队列里那些显示已确认有问题的任何项,查看项的基础请求和响应:
你可以使用上下文菜单在扫描队列上进行许多操作:
1.显示选中项的细节。
2.取消选中的项。
3.再次扫描选中的项。
4.暂停或继续扫描器。
使用这些方法,Burp Scanner让你对它做的每事情都细微地控制着,并和其他测试操作紧紧地结合在一起。它让你设置自己感兴趣的应用程序的区域的优先权,使用现场扫描浏览它们,或者从站点地图选中它们进行扫描。它立即提供关于这些区域的反馈,来通知你的手动测试结果。
审查结果(Reviewing results)
除了上面单个请求视图里发现的问题,Burp Scanner保存了一份对所有发现的问题的汇总记录,在一个目标应用程序的站点地图的视图树上显示出来。选中视图树上的一个主机或者文件夹显示出在站点上这个分支列举出的所有已确认的问题:
当发现同类型的多个问题时,这些问题会在面板的右上部汇总成一个问题。你可以展开这个汇总项来查看每个有问题的实例。在面板右上部里选中一个问题,在面板右下部里显示出这个问题的完整细节。这包含了自定义的漏洞咨询,所有相关的请求和响应,来理解和再现这个问题。
咨询包含了对了问题的标准描述和它的应对,以及这个问题特征和整治手段的描述。
在上面的例子中,跨站点脚本咨询告诉我们:
1.提供了攻击输入的请求参数(搜索关键词)。
2.响应中的输入返回的上下文语法(在一个 JavaScript的片段里的一个单引号分割的字符串)。
3.这个应用程序在我们的输入中过滤了单引号字符,但是却没过滤反斜杠,这就让我们回避了过滤器。
4.Burp向应用程序提交了理论上的有效载荷,这个有效载荷的格式被返回了。
5.这个原本的请求使用的是 POST方法,Burp能把它转换成 GET方法的请求来方便地证实和发现这个问题。
Burp Scann对每一个发现的问题都给出了一个安全等级(高,中,低,信息性的)和可信度(一定,坚定,暂定)。当使用一个不太可靠的技术确认一个问题时,Burp通过降低可信度来让你注意。在咨询的旁边,Burp显示了那些用来确认问题的请求和响应,并对相关部分进行加亮。你可以查看 Burp是怎样来确认这个问题的,并能迅速地明白这个漏洞的本质。你也可以把这些请求发送到其他工具上进行手动验证这个问题,或者微调 Burp搜集的攻击理论。
在扫描到的问题的列表里,你可以对单个或多个的安全级别和可信度进行修改 (通过上下菜单),或者集中删除问题(通过上下文菜单或使用”del”键)。
注意如果你删除一个问题,Burp重新发现同一问题(例如,如果你重新扫描同样的请求),这个问题会再次被报出。相反,如果你把这个问题标记为误判,就不会出现相同的问题了。因此,删除问题的最好办法是再结果视图树上清除那些你不感兴趣的主机或路径。对于那些你不想要问题,当你正在使用它的功能时,可以使用误判标记。