通过应用映射执行路径
概括
在开始安全测试之前,了解应用程序的结构至关重要。如果对应用程序的布局没有透彻的了解,就不可能对其进行彻底的测试。
测试目标
- 映射目标应用程序并了解主要工作流。
如何测试
在黑盒测试中,测试整个代码库是极其困难的。不仅仅是因为测试人员看不到应用程序的代码路径,而且即使他们看到了,测试所有代码路径也会非常耗时。协调这一点的一种方法是记录发现和测试的代码路径。
有几种方法可以测试和测量代码覆盖率:
- PATH - 测试通过应用程序的每条路径,包括针对每条决策路径的组合和边界值分析测试。虽然这种方法提供了彻底性,但可测试路径的数量随着每个决策分支呈指数增长。
- Data Flow (or Taint Analysis) - 通过外部交互(通常是用户)测试变量的分配。专注于映射整个应用程序中数据的流动、转换和使用。
- Race - 测试处理相同数据的应用程序的多个并发实例。
应与应用程序所有者协商权衡使用何种方法以及每种方法的使用程度。也可以采用更简单的方法,包括询问应用程序所有者他们特别关注哪些功能或代码段以及如何到达这些代码段。
为了向应用程序所有者展示代码覆盖率,测试人员可以从电子表格开始并记录通过爬取应用程序(手动或自动)发现的所有链接。然后,测试人员可以更仔细地查看应用程序中的决策点,并调查发现了多少重要的代码路径。然后应将这些记录在电子表格中,其中包含所发现路径的 URL、散文和屏幕截图描述。
自动抓取
自动蜘蛛是一种用于自动发现特定网站上的新资源(URL)的工具。它以要访问的 URL 列表开始,称为种子,这取决于 Spider 的启动方式。虽然有很多 Spidering 工具,但以下示例使用Zed Attack Proxy (ZAP):
图 4.1.7-1:Zed 攻击代理屏幕
ZAP提供各种自动爬取选项,可以根据测试人员的需要加以利用: