很多人开始学习 Web 渗透测试时,会先记工具和漏洞名称:代理、扫描器、XSS、SQL 注入、越权。工具和漏洞当然重要,但它们并不能自动组成一套专业的测试能力。真正困难的问题是:目标是否被授权、攻击面是否完整、不同角色和租户是否覆盖、业务逻辑是否理解、证据是否足够,以及修复后能否复测闭环。
这篇文章把一份完整的 Web 渗透测试知识树整理成一条学习和执行路线。它不提供针对未授权目标的攻击指令,而是帮助你建立一套安全、可解释、可复用的方法论。
一、先建立标准地图
截至 2026 年 10 月,Web 渗透测试没有一个覆盖所有行业和所有目标的唯一官方标准。更合理的方式是组合不同标准:用 NIST 管理生命周期,用 PTES 划分阶段,用 OWASP WSTG 设计 Web 测试覆盖,用 OWASP ASVS 定义安全要求,再用 CREST 管理服务质量和可辩护性。涉及支付卡数据时,再叠加 PCI DSS。
| 目的 | 推荐参考 | 解决的问题 |
|---|---|---|
| 测试治理和生命周期 | NIST SP 800-115 | 如何规划、执行、报告和复测 |
| 渗透测试阶段 | PTES | 一次测试应该按什么顺序推进 |
| Web 技术覆盖 | OWASP WSTG v4.2 | Web 应用和 Web 服务具体测什么 |
| 安全要求基线 | OWASP ASVS 5.0.0 | 应用应该满足哪些安全控制 |
| 质量和交付 | CREST Defensible Penetration Test | 范围、人员、证据、报告和签署是否可辩护 |
| 支付合规 | PCI DSS 文档库 | 支付卡环境中的渗透测试要求 |
| 测试度量 | ISECOM OSSTMM | 如何理解测试的可重复性和运营安全 |
这几份材料的定位不同,不能相互替代。WSTG 是 Web 测试目录,不是完整课程;ASVS 是安全要求基线,不是项目执行流程;PTES 是阶段骨架,不是漏洞清单;CREST 强调质量和范围,也不会替测试人员完成技术判断。
二、完整知识树
可以把 Web 渗透测试能力看成下面这棵树:
Web 渗透测试
├── 0. 授权、伦理与治理
│ ├── 书面授权与资产归属
│ ├── 范围、排除项与 Rules of Engagement
│ ├── 测试账户、角色和租户
│ ├── 停止条件、紧急联系人和证据处理
│ └── 生产风险、隐私和第三方边界
├── 1. 计算机和网络基础
│ ├── TCP/IP、DNS、路由、代理和防火墙
│ ├── HTTP、TLS、缓存、重定向和代理链
│ ├── Linux、数据库、缓存、消息队列和容器
│ └── 云网络、对象存储、IAM 和密钥管理
├── 2. Web 架构与信任边界
│ ├── 浏览器、前端、Web Server 和 API Gateway
│ ├── 应用服务、微服务、数据库和异步任务
│ ├── 身份提供商、SSO、支付和第三方集成
│ └── 公网、内网、用户、租户、服务和环境边界
├── 3. 身份、认证、会话与授权
│ ├── 注册、恢复、MFA、OAuth/OIDC 和 SAML
│ ├── Cookie、Session、JWT、API Key 和机器身份
│ ├── RBAC、ABAC、ReBAC、对象级和字段级权限
│ └── 普通用户、管理员、服务账户和多租户隔离
├── 4. 渗透测试方法论
│ ├── 目标、威胁建模和攻击面建模
│ ├── 情报收集和漏洞分析
│ ├── 最小影响的安全验证和影响评估
│ ├── 报告、修复、复测和残余风险
│ └── 黑盒、灰盒、白盒与测试深度
├── 5. OWASP WSTG 测试域
│ ├── 信息收集
│ ├── 配置与部署管理
│ ├── 身份管理、认证、授权和会话
│ ├── 输入验证、错误处理和密码学
│ ├── 业务逻辑和客户端测试
│ └── Web 服务、API、GraphQL 和 WebSocket
├── 6. 专项场景
│ ├── 多租户 SaaS
│ ├── 支付和交易
│ ├── OAuth/OIDC/SSO
│ ├── 文件处理和对象存储
│ ├── GraphQL、WebSocket 和 Webhook
│ └── Web 与云、容器、CI/CD 的组合风险
├── 7. 证据、报告和风险评级
│ ├── 复现条件、请求响应和最小化证据
│ ├── 技术影响、业务影响和攻击路径
│ ├── 严重性、置信度、覆盖范围和限制
│ └── 根因修复、复测标准和风险接受
└── 8. 安全工程闭环
├── 威胁建模和安全需求
├── SAST、SCA、DAST 和自动化回归
├── 日志、告警、检测和事件响应
└── 漏洞趋势、质量门禁和持续改进
这棵树的关键不是记住更多名词,而是理解层与层之间的关系:基础知识帮助你理解请求和系统,方法论帮助你控制测试过程,WSTG 帮助你覆盖 Web 风险,ASVS 帮助你判断安全要求,报告和复测则把发现变成工程闭环。
三、一次正式 Web 渗透测试如何展开
1. 明确目标和成功标准
先明确测试是为了发布前验收、重大变更验证、年度安全评估、合规,还是为了验证检测响应能力。不同目标会影响测试深度、账户准备、是否纳入日志告警,以及最终报告的重点。
成功标准也要提前写清楚,例如:验证不同租户之间是否隔离、验证高敏感功能的授权、验证关键业务流程是否可以被绕过,或者验证发现的问题是否已经修复。
2. 取得授权并编写 ROE
测试前必须形成书面授权和 Rules of Engagement。至少写清楚目标域名、IP、API、环境、时间窗口、测试源 IP、测试账户、允许和禁止的操作、速率限制、停止条件、紧急联系人、第三方服务授权状态,以及证据和数据如何保存、访问和销毁。
生产环境尤其要避免未经明确授权的 DoS、数据破坏、大规模导出、持久化和横向移动。发现真实入侵或非测试人员活动时,应停止相关动作并转交事件响应流程。
3. 建立完整攻击面
“测试一个 Web URL”通常不等于测试了整个应用。需要确认是否包括主站、子域名、开发和预生产环境、管理后台、API、GraphQL、WebSocket、Webhook、移动端后端、身份系统、文件存储、CDN、源站以及支付、邮件和短信等集成。
建议建立一张矩阵:
| 维度 | 示例 |
|---|---|
| 资产 | 域名、API、后台、对象存储、回调服务 |
| 入口 | URL、HTTP 方法、参数、文件上传、消息和任务 |
| 主体 | 匿名用户、普通用户、管理员、服务账户 |
| 资源 | 用户、订单、文件、项目、租户、组织 |
| 操作 | 读取、创建、修改、删除、导出、审批、支付 |
| 状态 | 新建、审批、完成、取消、退款、冻结 |
4. 情报收集和应用建模
按照 WSTG 的信息收集思路,识别应用入口、技术栈、版本、路径、参数、角色、流程和信任边界。重点不是堆积扫描结果,而是把收集结果转化为端点和权限模型。
特别要关注前端 JavaScript 中暴露的 API、OpenAPI 或 GraphQL Schema、旧版本接口、备份和调试入口、管理接口、文件下载地址,以及 Web 应用与后端服务之间的关系。
5. 以 WSTG 为技术测试目录
配置与部署
检查默认配置、调试模式、详细错误、不必要的 HTTP 方法、目录列表、备份文件、管理接口、安全响应头、CORS、CSP、TLS、缓存、源站暴露和云存储访问控制。
身份、认证和会话
覆盖注册、账户枚举、密码策略、登录保护、MFA、密码重置、账户恢复、OAuth/OIDC/SAML、Cookie 属性、Session 轮换、注销、超时、Remember Me、JWT 和刷新令牌。
授权和租户隔离
授权问题通常比单个输入验证问题更接近真实业务风险。应分别测试匿名用户、普通用户、不同用户、不同租户、高权限用户和服务账户,检查对象级、功能级、字段级、操作级和租户级授权。
至少要验证:用户 A 是否能访问用户 B 的资源,普通用户是否能调用管理员功能,租户 A 是否能读取或修改租户 B 的数据,以及 Web、API、移动端和后台之间的授权是否一致。
输入验证和输出处理
覆盖 SQL/NoSQL/LDAP、命令、模板和表达式注入,XSS、SSRF、路径遍历、文件上传、XXE、反序列化、参数污染、类型混淆、编码差异、请求解析差异以及资源限制。
这里的原则是:自动化工具负责提供广度,人工验证负责判断上下文、权限、可利用性和业务影响。
业务逻辑
业务逻辑是 Web 渗透测试与简单扫描之间最重要的差异。需要理解价格、余额、订单、支付、退款、审批、邀请、优惠、配额和状态机,检查流程跳过、重复提交、重放、竞态、次数限制绕过、权限变更绕过和多步骤流程中的身份混淆。
客户端、API 和集成
检查 DOM XSS、点击劫持、跨域通信、postMessage、Web Storage、前端配置、WebSocket、API 版本、GraphQL Resolver 授权、Webhook 签名和第三方回调。
6. 安全地验证漏洞
疑似漏洞必须经过人工确认。一个合格的漏洞结论应当说明受影响资产、角色、前置条件、复现稳定性、最小化证据、技术影响和业务影响。
安全验证的目标是证明问题,而不是破坏目标:使用测试账户和测试数据,读取最少量数据,达到证明目标后停止,不建立后门、不进行大规模导出,也不执行超出 ROE 的横向移动。
7. 报告、修复和复测
报告至少应包含管理层摘要、测试范围、排除项、方法和版本、覆盖情况、限制、漏洞证据、复现步骤、根因、技术和业务影响、严重性、修复建议以及复测标准。
风险评级不能只看一个分数。应同时考虑可利用性、所需权限、用户交互、数据敏感度、影响范围、业务损失、可检测性和缓解措施。CVSS 可以统一表达技术严重性,但不能替代业务风险判断。
修复后要逐项复测:问题是否消失、是否存在绕过、是否引入新问题,最后更新残余风险并关闭、延期或正式接受风险。
四、重点专项:为什么多租户、API 和业务逻辑最容易漏测
多租户 SaaS
多租户系统不能只测“登录后能不能访问页面”,还要分析租户 ID 的来源、对象归属、后台任务、缓存键、对象存储路径、搜索和导出接口,以及支持人员和管理员的跨租户权限。
API
API 经常拥有比前端更多的字段、方法和历史版本。应把 API 当成独立攻击面,测试认证、对象级授权、功能级授权、字段级授权、批量操作、分页过滤、速率限制、资源消耗、错误信息和敏感字段返回。
业务逻辑
业务逻辑问题很少能被通用扫描器完整发现。测试人员必须理解业务规则和状态变化,构造不同角色、不同状态、不同时间顺序和不同并发条件,验证系统是否真正执行了服务端约束。
五、工具应该放在哪个位置
工具是能力放大器,不是判断主体。一个完整的工具能力树包括:
- 浏览器开发者工具:观察 DOM、JavaScript、Storage 和网络调用;
- HTTP 代理:修改、重放和对比请求;
- 发现和映射工具:识别 URL、参数、API 和技术栈;
- DAST、SAST、SCA 和配置检查:扩大覆盖并提供线索;
- 脚本和 API 客户端:重复测试、角色对比和业务数据计算;
- 日志和证据工具:记录请求、响应、时间、账户、角色和测试结果。
工具输出必须人工确认,测试速率和并发必须符合 ROE,工具版本、参数、排除项和误报处理也应记录在测试资料中。
六、学习路线:从基础到职业化交付
第一阶段:基础
学习 HTTP、浏览器、Cookie、Session、Token、同源策略、CORS、CSRF、TLS、数据库、Linux、网络和基本脚本。阶段目标是能够解释一次登录请求和一个简单 Web 应用的信任边界。
第二阶段:常见 Web 安全问题
学习 XSS、SQL/NoSQL 注入、SSRF、路径遍历、文件上传、CSRF、会话安全和常见越权。每个问题都要同时掌握前置条件、证据、影响、根因和修复,而不是只记住名称。
第三阶段:系统性测试
通读 WSTG,建立角色和权限矩阵,练习 API、业务逻辑、多租户、范围和 ROE,并尝试独立编写测试计划和技术报告。
第四阶段:专项方向
根据实际工作选择 API/SaaS、OAuth/OIDC/SSO、支付交易、云和容器、GraphQL、WebSocket、源代码审计、DevSecOps 或红队与检测响应。
第五阶段:职业化交付
学习范围沟通、第三方采购、测试质量控制、风险评级、管理层沟通、证据保密、修复建议、复测和风险接受。最终应能交付测试计划、ROE、漏洞报告和复测报告。
七、一次测试的最小检查清单
测试前
- 已取得书面授权并确认资产归属。
- 已确认生产、预生产或测试环境。
- 已写清范围、排除项、时间窗口和停止条件。
- 已准备匿名、普通用户、高权限和跨租户测试账户。
- 已确认 API、后台、云存储和第三方集成的授权状态。
- 已确定证据保存、数据访问和销毁方式。
测试中
- 已建立资产、端点、角色、租户和状态矩阵。
- 已覆盖认证、授权、会话、输入验证和业务逻辑。
- 已分别测试 Web、API 和关键集成。
- 已区分工具发现与人工确认。
- 已记录请求、响应、账户、角色、时间和环境。
- 已控制速率和影响,并在达到证明目标后停止扩大利用。
测试后
- 已清理测试账户、文件和临时数据。
- 已整理原始证据并去除无关敏感数据。
- 已记录未测试内容和限制。
- 已完成管理层摘要和技术发现。
- 已针对根因提出修复建议。
- 已确定每个问题的复测标准和时间。
八、结语
系统性的 Web 渗透测试不是“运行工具,然后列出几个漏洞”,而是一套从授权、建模、覆盖、验证、报告到复测的工程方法。
如果只记住一条流程,可以记住:
先授权和定义边界,再理解应用和业务;用 WSTG 建立测试覆盖,用人工分析验证权限和业务逻辑;用最小影响证明真实风险,最后通过报告、修复和复测形成闭环。
参考资料
- NIST SP 800-115:Technical Guide to Information Security Testing and Assessment
- Penetration Testing Execution Standard
- OWASP Web Security Testing Guide
- OWASP WSTG v4.2
- OWASP Application Security Verification Standard
- CREST Defensible Penetration Test
- CREST:A Guide to Penetration Testing
- PCI Security Standards Council Document Library
- PCI Penetration Testing Guidance
- ISECOM OSSTMM
- CWE
- CAPEC
- CVSS