渗透测试步骤

(1)假设所针对的参数被附加到应用程序预先设定的目录之后,那么插入任意一个子目录和一个遍历序列,修改参数的值。例如,如果应用程序提交参数

img294a

那么可以尝试提交以下值:

img294b

如果两种情况下应用程序的行为完全相同,就表示它易于受到攻击。应该继续进行测试,尝试通过向上回溯到起始目录来访问不同的文件。

(2)在上述两种情况下,如果应用程序的行为有所不同,那么应用程序可能阻止、删除或净化遍历序列,致使文件路径失效。需要研究是否可通过其他方法避开应用程序的确认过滤(请参阅下面讨论的内容)。

即使子目录“bar”并不存在,这个测试仍然有效,因为大多数文件系统在尝试获取文件路径前对其进行了规范化。路径序列删除了虚构的目录,因此服务器并不检查它是否存在。

如果发现提交遍历序列但不向上回溯至起始目录不会影响应用程序的行为,那么在接下来的测试中,应该尝试遍历出起始目录,从服务器文件系统的其他地方访问文件。