范围界定和测试目标
渗透测试从明确的范围界定和与客户的目标对齐开始。范围可能包括主应用程序、API、移动客户端、云基础设施或这些组件的组合。每个组件都需要特定的测试方法和工具来识别授权边界内的漏洞。
在开始工作之前,必须完成授权文档化、范围内系统的枚举、日程安排协调以及成功标准的定义。适当的范围文档化可以防止未授权的测试,并确保工作集中在最关键的应用程序组件和攻击面上。
网络侦察和资产识别
侦察涉及识别授权范围内的主机、开放端口、运行的服务和应用程序。技术包括端口扫描、服务版本检测、DNS枚举和网络服务配置评估。侦察数据构成了目标更高层级应用程序测试和攻击向量优先级排列的基础。
在侦察过程中,必须全面记录所有发现的服务、软件版本和配置。应特别关注开放端口、活跃身份验证服务和应用程序入口点。这些信息决定了后续测试阶段的技术选择,并帮助识别明显和隐微的安全错误配置。
身份验证和会话管理测试
身份验证是关键领域,因为弱点会导致许多应用程序安全控制被绕过。测试包括密码强度验证、暴力破解保护机制、双因素身份验证实现以及密码恢复流程验证。测试应识别常见的易受攻击的身份验证模式和威胁安全性的实现缺陷。
会话管理与身份验证紧密相关。评估包括测试会话令牌生成的可预测性、每个请求的令牌验证、正确的会话过期以及对会话固定攻击的保护。特别关注需要放在退出机制实现、角色更改后的权限重新验证以及不同应用程序状态之间的令牌生命周期管理。
输入验证和注入攻击防护
输入验证测试是应用程序安全评估的基础。测试涉及通过多个输入通道(表单字段、URL参数、HTTP头部和文件上传)传输特殊字符、SQL语法、JavaScript代码、操作系统命令和其他恶意负载。OWASP Web Security Testing Guide为系统地评估每个输入向量和注入技术定义了标准方法。
特别强调SQL注入、跨站脚本编制(XSS)、文件包含和命令注入漏洞,因为这些可能导致应用程序完全被攻破。测试包括直接攻击尝试以及输出编码和过滤机制的验证,这些机制应防止在特定上下文中被利用。客户端和服务器端验证都必须进行评估。
访问控制和授权评估
访问控制确保用户只能访问获得授权的资源和功能。测试包括纵向特权提升评估(普通用户获得管理功能访问权)和横向特权提升测试(用户访问其他用户数据)。技术包括直接URL操纵、请求参数修改以及带有改变标识符的已验证请求重放。
必须测试所有应用程序功能,以验证授权检查在业务逻辑级别强制执行,而不仅在表示层。特别需要关注隐藏或遗忘的管理功能、直接可调用的API方法以及跨相关功能不一致应用的访问控制。显式和隐式权限都必须进行验证。
业务逻辑和功能漏洞测试
应用程序业务逻辑可能包含通过标准安全测试方法无法检测的漏洞。示例包括多步流程绕过、操作顺序操纵、竞争条件利用、财务验证规避和异步操作滥用。测试需要理解开发者意图并系统地尝试规避既定行为。
识别业务逻辑漏洞需要审查应用程序文档、理解关键工作流程并系统地测试边界条件和异常操作序列。特别关注应放在计算、限制验证、状态验证以及操作之间的时间窗口。测试应包括使用合法和精心设计的数据进行的测试,以识别逻辑缺陷。
OWASP框架在渗透测试结构中的应用
OWASP Top 10和OWASP Web Security Testing Guide代表用于指导渗透测试方法的标准组件。OWASP Top 10描述了最关键的Web应用程序漏洞类别,允许测试优先级排列。Web Security Testing Guide为系统地评估每个安全领域提供了详细的方法。
利用标准化的OWASP方法可确保测试的完整性、结果的可重现性以及与其他评估的可比性。方法涵盖所有应用程序层:从服务器配置到应用程序逻辑,从数据传输保护到存储安全。根据当前OWASP版本定期更新方法可确保渗透测试考虑新兴漏洞类型和攻击模式。