确定测试范围
渗透测试始于明确界定的工作范围。在测试开始前,必须获得系统所有者的书面授权,并就受测主机、应用程序和服务的精确列表达成一致。范围上的歧义可能导致冲突和法律问题。
范围文档化包括识别目标系统、授权的测试方法、测试时间窗口和协调联系人。必须将合同外的系统排除在测试范围之外,并确保所有相关方理解测试的限制和风险。
- 获取测试活动的书面授权
- 确认在范围内的IP地址和域名列表
- 定义测试计划和允许的测试时间
- 识别具有更高安全要求的关键系统
应用标准化测试方法论
OWASP网络安全测试指南(WSTG)为网络应用安全评估提供了结构化的方法。版本4.2描述了评估安全性的系统方法,包括信息收集、配置审查、身份验证测试和业务逻辑分析。使用统一的方法论确保了全面的覆盖和结果的可重现性。
该方法论纳入了OWASP十大漏洞的测试,这些漏洞代表了网络应用面临的最关键风险。应用这些标准时,测试人员必须根据特定应用的架构、使用的技术和业务功能来调整方法论。
- OWASP WSTG版本4.2可在线获取和PDF版本
- OWASP十大确定了测试的优先领域
- 方法论涵盖信息收集、扫描和主动测试阶段
侦察和信息收集阶段
侦察涉及使用开源方法和授权访问来收集目标系统的信息。在此阶段,测试人员识别技术栈、软件版本、服务器配置和域名信息。这减少了盲目尝试,使测试更加高效。
侦察工具帮助识别开放端口、网络服务器版本、框架和使用中的库。版本信息至关重要,因为它能够识别已知漏洞。然而,所有活动必须在同意的测试范围内进行。
- 分析HTTP响应头以确定软件版本
- 识别应用程序技术栈
- 绘制网络段和开放服务的地图
HTTP协议和通信分析
HTTP仍然是网络应用交互的主要协议。理解HTTP消息结构、请求方法(GET、POST、PUT、DELETE)和响应码对于漏洞识别至关重要。HTTP头包含重要的安全信息:内容安全策略、X-Frame-Options、严格传输安全和其他保护指令。
在测试期间,分析基于HTTP的身份验证机制、Cookie处理、重定向和条件请求。应特别关注必需安全头的存在或缺失,这些头可以缓解跨站脚本、点击劫持和敏感数据缓存风险。
- 验证内容安全策略和其他安全头的存在
- 分析缓存管理机制
- 测试重定向和URL转发的处理
身份验证和会话管理测试
身份验证和会话管理是关键的安全组件。测试包括验证密码强度政策、账户恢复机制的正确实现和会话Cookie的安全性。检查应用程序是否使用安全的Cookie标志(HttpOnly、Secure、SameSite)来防止通过XSS和CSRF攻击进行的令牌盗取。
评估应用程序对凭证暴力破解攻击的保护效果、是否记录未授权访问尝试,以及注销功能的正确性。会话逻辑分析包括验证会话ID的唯一性和不可预测性、过期处理和适当的失效机制。
- 测试对凭证暴力破解攻击的抵抗力
- 验证Cookie保护标志(HttpOnly、Secure、SameSite)
- 分析会话过期和注销机制
代码注入漏洞测试
代码注入包括SQL注入、跨站脚本(XSS)、操作系统命令注入和其他向量。测试需要系统地验证所有应用入口点:查询参数、头、Cookie和上传的文件。测试人员必须尝试注入特殊字符和代码构造,以识别不足的输入验证。
此类大多数漏洞源于用户输入的处理不当。重要的是测试主要攻击向量和过滤器绕过。参数化数据库查询和正确的输出编码是标准的保护措施,需要进行验证。
- 系统地测试所有输入参数
- 验证适当的输入验证和清理
- 分析错误处理中的信息泄露
结果文档和报告
文档化是测试人员工作的不可或缺的部分。每个识别的漏洞必须用再现步骤、潜在影响和补救建议进行描述。报告必须以结构化方式呈现,以便安全工程师和应用程序开发人员都能有效地使用它。
按严重程度(关键、高、中、低)对漏洞进行分类,有助于客户优先处理修复。报告应包括执行摘要、每个漏洞的详细说明以及概念验证,以及风险缓解和开发流程改进的建议。
- 每个漏洞必须可复现并记录完整
- 使用标准的严重程度分类系统
- 在报告中包含补救建议