审计选项
有许多选项可用于在审计扫描期间配置Burp Scanner的行为。这些可以在Burp启动扫描时即时配置,或是在 Burp 的配置库中修改其配置。
优化审计
通过这些设置,您可以调整审计的整体逻辑行为,来达到针对目标的一个更好的审计效果。
优化审计可以使用如下配置:
- 审计速度 - 此选项确定在检查漏洞时某些审计的深度。
快速(Fast)
会进行较少的请求,检查某些漏洞时也只是做一个基础审计。深入(Thorough)
会产生更多请求并检查更多衍生类型的漏洞。正常(Normal)
则会位于两者之间,其代表了审计过程在速度和深度之间的适当折中。
- 审核准确度 - 此选项确定在报告某些类型的漏洞之前扫描程序需要的数据量。 有些问题只能使用
盲猜(blind)
来检测。Burp会根据某些观察到的行为(例如延迟的不同或响应的不同)推断出可能存在的漏洞。因为这些观察到的行为随时都可能发生,所以会很容易出现误报。为了减少误报,当推断出可能的问题时,Burp会多次重复某些测试,来确定提交的输入和应程序的反馈是否多次表现一致。 精度选项用于控制Burp重试这些测试的次数。尽量减少漏报(Minimize false negatives)
会尽可能少的去尝试,因此更有可能误报问题,但因为目标的返回可能不是每次都一样,所以也不太可能错过真正的问题。尽量减少误报(Minimize false positives)
会尽可能多的去尝试,因此不太可能会误报,但因为测试的不确定性,可能因此会错过了一些真正的问题,因为某些请求可能恰好无法返回结果测试了。正常(Normal)
则是位于两者之间,代表了误报和漏报之间的权衡。
跳过不太可能有效的插入点的基值 - 此选项会忽略在给定参数的每个插入点基值而显得无关的检查,会使扫描更有效。例如,如果参数的值包含通常不会出现在文件名中的字符,则Burp将跳过此参数的路径遍历漏洞的检查。使用此选项可以加快扫描速度,但是会存在漏报的情况。
合并经常发生的被动问题 - 此选项控制Burp是否合并经常发生的被动问题。 使用此选项可以在许多位置甚至整个应用程序中出现相同问题(例如
点击劫持(Clickjacking)
)时大大减少某些干扰测试的因素。- 自动保持会话 - 此选项控制Burp在扫描的审计阶段是否自动保持会话。 这仅适用于基于爬虫的审计,其中在爬虫爬取阶段识别的导航路径可用于在审计阶段维护会话。 在现代应用程序中,通常必须保持会话以实现良好的审计范围。 但是随着请求的数量增加,维护会话会逐渐产生额外开销,如果您不知道这样做或是想人工维护会话,则可以禁用此选项。
- 必要时进行重定向 - 某些漏洞只能通过以下重定向来检测(例如某些错误消息中的XSS问题,只有在重定向后才会得知结果)。由于某些应用程序会向第三方URL发起请求,请求的过程中会带着提交的参数,因此Burp不会进行所有的重定向请求,这样可以防止在测试的过程中跑飞。如果正在扫描的请求在定义的目标范围内(即您使用目标范围来控制扫描的内容),那么Burp将只重定向在目标范围之内的URL。如果正在扫描的请求不在范围内(即您已手动启动对范围外请求的扫描),则Burp将仅遵循以下两种可能的重定向:
- 与扫描请求相同的主机/端口的重定向;
- 未被套件范围的排除规则明确涵盖(例如“logout.aspx”)
问题报告
这些设置控制Burp将会检查的检查点。
您可以单独选择检查点类型,也可以根据检测它们所涉及的审计活动的性质选择检查点类型。如果选择单个检查点,还可以选择用于某些类型的检测方法。使用相关问题类型的上下文菜单,然后选择编辑检测方法(Edit detection methods)
。
执行的每项检查都会增加请求的数量以及审计的总时间。您可以根据您对应用程序技术的了解来打开或关闭单个检查点。例如,如果您知道应用程序没有使用LDAP,则可以关闭关于LDAP方面的检查点。或者,如果您知道应用程序使用哪个后端数据库,则可以关闭用于其他类型数据库的SQL注入检查。
Note: if any issues are enabled that are labelled "active", then Burp Scanner will send requests to the application designed to detect those issues. Depending on the issues selected, these requests might be reasonably viewed as malicious or might damage the application or its data.
注意: 如果启用任何标记为活动(active)
的问题,则Burp Scanner 会向应用程序发送相应的检查请求。根据所选问题,这些请求可能会被告警为恶意攻击或可能会导致应用程序损坏或数据丢失。
审计期间处理应用程序错误
这些设置控制 Burp Scanner 在扫描审计阶段出现应用程序错误该怎么处理,例如连接失败和传输超时。
您可以配置以下选项:
- 在跳过当前插入点中的其余检查之前连续失败的审核检查的数量。
- 在跳过剩余插入点并将审核项标记为失败之前连续失败的插入点数。
- 暂停任务之前连续失败的审计项目数或失败的审计项目的总百分比。
- 在每个审计阶段完成时执行的后续过程的数量,以重试失败的操作。
您可以将任何设置留空以禁用它。
插入点类型
这些设置控制扫描程序如何将插入点放入每个被审计的HTTP请求中。
Burp Scanner 可以对插入点的位置进行细粒度控制,仔细配置这些选项将使您可以根据所针对的应用程序进行定制审计。插入点的配置也代表了扫描速度和全面性之间的权衡。
可以选择以下类别的插入点:
- URL参数值 - URL查询字符串中的标准参数值。
- Body参数值 - 消息正文中的参数值,包括标准表单生成的参数,多层编码参数的属性,例如上载的文件名,XML参数值和属性以及JSON值等。
- Cookie值 - HTTP Cookie的值。
- 参数名称 - 欲添加的参数名称。该选项会在始终在每个HTTP包的URL中添加参数,同时对于POST请求会在body中添加参数。如果仅测试参数值,则测试过程中添加的参数名称通常可以检测错过的异常错误。
- HTTP标头 - Referer和User-Agent标头的值。测试这些插入点通常可以在日志记录功能中检测SQL注入或存储型XSS等问题。
- HTTP报文 - 整个请求报文。这适用于请求正文中包含XML或JSON内容的请求。
- URL路径文件名 - URL路径的文件名部分的值,它位于最终路径文件夹之后和查询字符串之前。 例如
http://www.example.com/a/b/c/index.php?a=1
,该选项表示选择的是index.php
。 - URL路径文件夹 - URL路径中所有路径的值,它位于文件名部分之前
例如http://www.example.com/a/b/c/index.php?a=1
,该选项表示选择的是/a/b/c/
。
注意: 除了让Burp自动分配插入点之外,还可以自定义插入点,因此您可以在发出攻击的请求中指定任意位置。要使用此功能,请将请求发送到 Intruder,使用载荷位置(payload positions
)选项卡以常规方式定义每个插入点的开始和结束,然后选择Intruder菜单选项“审计定义的插入点”。您还可以使用Burp扩展(Burp Extender
)以编程方式指定自定义插入点位置。
修改参数位置选项
通过这些设置,您可以将 Scanner 的参数位置移动到请求中的其他位置,然后在原始位置进行测试。例如,您可以将每个URL参数移动到邮件正文中并在那里重新进行测试。或者您可以将每个body参数移动到cookie中并在那里重新测试。
以这种方式移动参数通常可以绕过某些防御过滤器。许多应用程序和WAF会对每个都在请求中的预期位置的参数进行验证。将参数移动到其他位置可以避开此验证。当应用程序代码检索参数以实现其主逻辑时,它可以使用与参数的位置无关的API来执行此操作。如果是这样,那么移动参数的方式可以使您能够进行过滤处理之前来发起针对某个路径的攻击。
以下选项可用于更改参数位置:
- URL中GET的参数到POST
- URL中GET的参数到Cookie
- POST参数到GET
- POST参数到Cookie
- Cookie参数到GET
- Cookie参数到POST
请注意,更改参数位置会引发更多的扫描请求,因为每个请求参数都会被有效扫描多次。
忽略插入点
通过这些设置,您可以指定Burp Scanner应跳过某些审核检查的请求参数。有单独的列表可以跳过服务器端注入检查(例如SQL注入)和跳过所有检查。
服务器端注入检查相对耗时,因为Burp发送多个请求来探测服务器上的各种盲漏洞。如果您认为请求中出现的某些参数不易受攻击(例如,仅由平台或Web服务器使用的内置参数),您可以告诉Burp不要测试这些参数。 (测试跨站点脚本等客户端错误涉及的开销要少得多,因为如果参数不易受攻击,测试每个参数会对扫描持续时间产生最小的开销。)
如果参数由您不希望测试的应用程序组件处理,或者已知修改参数会导致应用程序不稳定,则跳过所有检查可能很有用。
列表中的每个项目都指定参数类型,要匹配的项目(名称或值),匹配类型(文字字符串或正则表达式)以及要匹配的表达式。
您可以通过URL路径中的位置(斜线分隔)来标识URL路径文件夹中的参数。要执行此操作,请从参数下拉列表中选择“URL路径文件夹”,从项目下拉列表中选择“名称”,并指定要从中排除的URL路径中的位置的索引号(从1开始)测试。您还可以按值指定URL路径文件夹参数。
频繁发生的插入点
通过这些设置,您可以配置Burp Scanner 是否可以避免频繁出现的插入点。 如果该选项已被配置,Burp 将识别已被证明无用的插入点(频繁发生而不会产生任何问题),并将放弃对这些插入点执行以实现更轻量的审计工作。
您可以选择该选项以优化的插入点类型。
其他的插入点设置
您可以选择是否使用嵌套插入点。当插入点的基值包含可识别格式的数据时,将使用嵌套插入点。例如,URL参数可能包含Base64编码的数据,而解码的值可能又包含JSON或XML数据。通过启用嵌套插入点的选项,Burp将为每个嵌套级别的每个单独输入项创建合适的插入点。使用此选项在扫描仅包含常规请求参数的请求时不会产生任何开销,但是能够使Burp访问一些复杂应用程序中以不同格式封装的数据的请求,以发现更多攻击面。
您可以配置是否对每个请求生成的插入点数量设置限制,从而防止扫描在遇到包含大量参数的请求时停止。如果此限制减少了插入点的数量,则审计项目视图中的项目条目将指示跳过的插入点数,使您可以手动查看请求并决定是否值得对其所有可能的插入点进行全面扫描。
JavaScript分析选项
这些设置控制Burp Scanner如何检测JavaScript中基于DOM的漏洞。可以使用以下选项:
- 是否对任何缺少的 JavaScript 依赖项发出HTTP请求。
- 是否使用静态或动态技术或两者兼具。请注意,您还可以通过编辑基于DOM的问题和已启用的检测方法来配置每个问题类型是否使用静态或动态技术。通过这些设置,您可以全局禁用所有针对JavaScript分析的静态/动态技术。
- 针对每个扫描项目进行静态分析所花费的最大时长。如果 Burp 遇到包含非常大或很复杂脚本,这可能会导致静态分析引擎消耗过多的系统资源。如果由于达到最大时间而截断特定项目的分析,则 Burp 会显示标识受影响项目的警报。您可以指定零或空值以表示不应用任何限制。
注意: JavaScript分析会消耗大量系统资源,因此可能需要将分析限制在关键的目标上。此外,在执行JavaScript分析时,可能需要在启动Burp的时候具有更大的内存量。