在手动测试中使用Burp Scanner
Last updated
Last updated
在本节中,我们将向你展示如何通过使用Burp Scanner来优化手动测试工作流程的多种方式,以补充你自己的知识和直觉。这不仅可以帮助你扩大测试范围,还可以让你把时间花在更重要的地方,而不是繁琐的准备工作上。
当你遇到一个有趣的功能或行为时,第一反应可能是将相关的请求发送到Repeater或Intruder做进一步调查。不过,将请求交给Burp Scanner也是有益的。它可以处理测试中更重复的方面,而你可以在其他地方更好地运用自己的技能。
如果右键单击一个请求并选择Do active scan,Burp Scanner将使用其默认配置仅对该请求进行审计。
这可能无法捕捉到每一个漏洞,但它可能在几秒钟内标记出本可能需要花费几个小时才能找到的问题。它还可以帮助你立即排除某些攻击。你仍然可以使用Burp的手动工具进行更有针对性的测试,不过你将能够将精力集中在特定的输入和更小范围的潜在漏洞上。
即使已经使用Burp Scanner对新目标运行了一次常规爬虫和审计,切换到这种更有针对性的审计方法也可以极大地减少你的整体扫描时间。
LAB
将扫描限制在单个请求中的好处很容易理解,不过还可以进一步将其仅限于测试该请求中的特定输入。
首先,将请求发送到Burp Intruder。在Positions选项卡中,将任何你感兴趣的插入点添加为有效负载位置,然后右键单击并选择Scan defined insertion points。
然后,你可以配置并启动一个只在这些位置放置有效负载的扫描。这样,你可以专注于你感兴趣的输入,而不是扫描一堆你知道不太可能有用的Cookie。
这对于测试你想要更仔细查看的单个参数特别有用。虽然可以使用Intruder只定义单个插入点,但在这种情况下使用Scan manual insertion point扩展通常更快。然后,你可以在请求中高亮显示任何字符序列(通常是参数值),之后从上下文菜单中选择Extensions > Scan manual insertion point。
这种方法可以非常快速地产生结果,只需几秒钟就能提供你需要的内容。这也意味着你可以选择扫描Burp Scanner通常不使用的输入,例如自定义标头值。
由于你可以在任意位置自由定义插入点,因此你还可以针对值中的特定子字符串作为目标。除其他用途外,这对于扫描非标准数据结构非常有用。
当处理常见格式(如JSON)时,Burp Scanner能够解析数据并在不破坏结构的情况下将有效负载放置在正确的位置。但是,考虑一个类似于以下的参数:
通过直觉,我们可以猜测后端会将其视为两个不同的值:某种ID和似乎是一个用户名,由连字符分隔。然而,Burp Scanner会把它视为一个单个的值。因此,它只会将有效负载放置在参数的末尾,或者完全替换该值。
通过在值的每个部分分别手动定义一个插入点,你可以准确地扫描甚至是像这样的非标准数据结构。