WEB应用程序渗透测试方法论

阅读量: x7 2022-03-28 01:55:35

WEB应用程序渗透测试方法论

指导思想:方法论中一系列任务根据他们之间的逻辑依赖关系组织和排序。实际上,渗透测试过程往往需要发挥自己的想象,思考可采取的攻击方向,并根据所发现的有关目标应用程序的信息指导攻击方向。

某一个阶段收集到的信息有助于返回到 前一个阶段,以设计更具有针对性的攻击。

在应用程序的某个区域发现的一个关键漏洞可简化对另一个区域的攻击。

一些区域的测试结果有助于确定在其他区域可立即探查出的重复出现的漏洞模式。

一般规范:适用于所有必须测试的区域以及需要采用的各种技巧

假设需要在咨询工作中采用这种方法,渗透测试员应当首先确定测试范围,明确了解测试包含的主机名、URL与功能以及允许执行的测试类型是否存在任何限制。还应当向应用程序所有者告知对一个“黑盒”目标实施任何渗透测试包含的内在风险,并建议他们在开始测试前备份所有重要数据。

2. 表单中输入URL编码的数据通常会导致浏览器执行另一层编码。例如,在表单中提交%00可能会导致向服务器发送值%2500。为此,通常最好在拦截代理服务器中查看最终请求。

3. 许多查找常见Web应用程序的测试需要发送各种专门设计的输入字符串,并监控应用程序响应,从中搜索表示漏洞存在的反常现象。判断漏洞存在不应仅判断正向特征,还应包含反向特征比对多角度确认,有时候,无论是否提交某个特定漏洞的触发器,应用程序对一个特殊请求的响应都将包含这个漏洞的签名。只要提交专门设计的特殊输入导致了与某个漏洞相关的行为(如一个特殊的错误消息),应该重新核查,确定在相关参数中提交良性输入是否也会造成相同的行为。

4. 前一个请求数据的返回状态会对接下来的请求以及返回造成影响。有时,当调查一个尚未确定的漏洞并隔离某一个反常行为的根源时,必须避免任何收集到的状态信息造成的影响。通常,使用一个新的浏览器进程开始另一个会话,再使用良性请求导航至观测到发生反常的位置,然后重新提交专门设计的输入,即可。还可以对请求中包含的cookie和缓存信息进行调整,重复利用这种方法。此外,还可以使用burp reqeater等工具隔离一个请求。

5. 一些应用程序使用一种负载平衡的配置,其中连续的HTTP请求可能会被不同的后端服务器在Web层,展现层,数据层或其它层处理。不同服务器在配置上的细微差异可能会影响到处理结果。另外,一些成功的攻击将改变处理请求的某一台服务器的状态,例如在web根目录上创建一个新的文件。为隔离特殊操作造成的影响,可能需要连续提交几个相同的请求,测试每个请求的结果,直到请求被相关服务器处理。

1. 解析应用程序内容

1.1 搜索可见的内容

1.2 浏览公共资源

1.3 发现隐藏的内容

1.4 查找默认的内容

1.5 枚举标识符指定的功能

1.6 调试参数

2. 分析应用程序

2.1 确定功能

2.2 确定数据进入点

2.3 确定所使用的技术

2.4 解析受攻击面

3. 测试客户端控件

3.1 通过客户端传送数据

3.2 客户端输入控件

3.3 测试浏览器扩展组件