定义测试范围

外部渗透测试(外部入侵测试)重点关注识别可从外部网络访问的网络应用和基础设施中的漏洞。在开始工作之前,必须明确定义测试边界:哪些应用、域名和IP地址包含在测试范围内,哪些明确被排除。在合同中记录此范围协议可保护测试人员和客户组织。

适当定义范围可以防止对测试参数之外的系统造成意外影响。需要就测试时间窗口、测试方法以及处理关键生产系统的程序达成一致。这包括紧急联系信息和发现生产环境问题时停止测试的程序。

    信息收集和侦察

    侦察是渗透测试中首先进行且至关重要的阶段。在此阶段,从开放来源收集有关目标系统的信息:域名、子域名、IP地址、使用的技术以及组织人员信息。使用工具分析DNS记录、执行WHOIS查询、分析网络服务器和检查应用。

    被动侦察不需要与目标系统进行直接交互,因此不会触发警报。但是,仍然必须保持进行评估的授权。在侦察过程中,识别将在后续主动分析中检查的潜在攻击入口点。

      漏洞评估和主动测试

      在信息收集之后,进行主动测试以识别已知和潜在的漏洞。根据OWASP网络安全测试指南方法论,必须检查应用的安全合规性,并识别访问控制、输入验证、会话管理和其他安全组件中的缺陷。

      测试必须覆盖典型的攻击向量,包括注入(SQL、命令)、跨站脚本(XSS)、安全配置错误和OWASP Top 10中的其他类别。每个发现的缺陷都应记录其在代码或配置中的具体位置、重现方法和潜在影响评估。

        HTTP通信和安全头分析

        HTTP协议通信安全测试是渗透测试的重要组成部分。必须验证安全头的存在和正确性:内容安全策略(CSP)、X-Frame-Options、严格传输安全(HSTS)和其他。正确配置这些头可防止整类攻击,包括点击劫持和XSS。

        HTTP会话分析包括验证cookie管理、正确的身份验证实现、会话令牌验证和日志记录。检查HTTPS使用情况、协议版本(首选HTTP/2)、CORS策略的存在以及其配置的正确性,以防止未授权访问资源。

          漏洞演示

          在识别漏洞后,以受控方式进行演示(利用)以确认其真实性和评估影响。这是渗透测试与简单漏洞扫描的区别。演示必须具有最少侵入性,不会对系统造成伤害,仅证明攻击的可能性。

          对于每个严重漏洞,为开发人员提供重现问题的逐步说明,使其能够正确解决根本原因。测试人员记录在演示过程中执行的所有操作,以确保透明度并能够验证修复。

            结果文档化

            高质量的渗透测试报告包括已识别漏洞摘要、按严重程度分类、每个问题的详细描述(包含攻击技术细节和影响)。报告必须包含修复建议,包括对官方指南和OWASP等组织的最佳实践的参考。

            报告应包含测试指标:应用覆盖范围、测试的组件、使用的方法论和工具。结果应按逻辑组织,按漏洞类型及其安全影响分类。建议为开发人员提供技术摘要,为管理层提供执行摘要。

              修复验证和重新测试

              收到报告后,组织开始着手修复已识别的漏洞。渗透测试人员应与开发团队合作,确认修复的正确性。在此阶段,进行重新测试,其中再次检查之前发现的漏洞。

              重要的是要确保修复不仅关闭特定漏洞,而且解决其根本原因,防止类似问题出现在应用其他地方。最终重新测试报告应包含每个漏洞的状态和其修复的证据。

                参考资料

                PENTEST.RED / RED JOURNAL