(1)当通过在不同的参数中提交专门设计的攻击字符串,探查应用程序中是否存在常见的漏洞时,应始终监控应用程序的响应,以确定任何可能包含有用信息的错误消息。
尝试通过在错误的情况下提交加密数据字符串,或通过对未处于处理操作的正确状态的资源执行操作,强制应用程序返回错误响应。
(2)注意,在服务器响应中返回的错误消息可能不会在浏览器中显示。因此,确定错误条件的有效方法,是在每一个原始响应中查找经常出现在错误消息中的关键字。例如:
error
exception
illegal
invalid
fail
stack
access
directory
file
not found
varchar
ODBC
SQL
SELECT
(3)在基本请求中发送一系列修改参数的请求时,为避免错误警报,应检查最初的请求是否已经包含任何正在寻找的关键字。
(4)可以使用Burp Intruder中的Grep函数迅速确定在由某个攻击生成的任何响应中出现的有用的关键字(请参阅第14章了解相关内容)。如果发现匹配的关键字,应手动检查相关响应,确定应用程序是否返回任何有用的错误信息。
提示
查看浏览器中的服务器的响应时要注意,默认情况下,Internet Explorer会隐藏许多错误消息,并用一个常规页面代替它们。可以选择“工具”→“Internet选项”(Tools→Internet Options),然后在“高级”(Advanced)选项卡中禁用这种行为。
由于Web应用程序通常会采用大量各不相同的技术与组件,因此渗透测试员经常会遇到一些以前从未见过的错误消息,它们可能不会立即揭示应用程序中出现的错误的本质。在这种情况下,可以从各种公共资源获得更多与错误消息有关的信息。
通常,不常见的错误消息往往是由某个特定的API故障造成的。对消息文本进行搜索就可以找到这个API的文档资料或开发者论坛,以及讨论这个问题的其他位置。
许多应用程序采用第三方组件执行一些常见的任务,如搜索、购物篮和站点反馈功能。这些组件生成的任何错误消息可能已经出现在其他应用程序中,并被人们在其他地方讨论。
一些应用程序中合并了公开发布的源代码。通过搜索出现在不常见错误消息中的一些特殊的表达式,就可以找到实际执行相关功能的源代码。然后检查这些代码,了解它们对输入执行了何种处理以及如何操纵应用程序,从而对某个漏洞加以利用。