salah23222/pentest-checklist
GitHub: salah23222/pentest-checklist
一份基于OWASP WSTG、ASVS、PTES及NIST标准构建的技术栈无关的Web应用渗透测试清单。
Stars: 1 | Forks: 0
# Web 应用渗透测试清单
这是一份**技术栈无关**、框架独立的渗透测试清单,用于评估**任何** Web 应用的安全性——无论其使用何种语言(PHP、Node.js、Python、Java、Go、Ruby、.NET 等)、框架或托管技术栈。
基于行业标准方法论构建:**OWASP WSTG v4.2**、**OWASP ASVS L2**、**OWASP API Security Top 10**、**PTES** 和 **NIST SP 800-115**。
## 法律与道德声明
本清单**仅**用于授权的安全测试——您自己的系统,或者您拥有**明确书面测试许可**的系统。在大多数司法管辖区,未经授权访问计算机系统是违法行为。在开始测试之前,请务必获取签署的授权书 / 交战规则 和 NDA。
## 目录
0. [测试前准备与范围](#0-pre-engagement--scope)
1. [信息收集 (WSTG-INFO)](#1-information-gathering-wstg-info)
2. [配置与部署 (WSTG-CONF)](#2-configuration--deployment-wstg-conf)
3. [身份管理 (WSTG-IDNT)](#3-identity-management-wstg-idnt)
4. [身份验证 (WSTG-ATHN)](#4-authentication-wstg-athn)
5. [授权 (WSTG-ATHZ)](#5-authorization-wstg-athz)
6. [会话管理 (WSTG-SESS)](#6-session-management-wstg-sess)
7. [输入验证 (WSTG-INPV)](#7-input-validation-wstg-inpv)
8. [错误处理 (WSTG-ERRH)](#8-error-handling-wstg-errh)
9. [密码学 (WSTG-CRYP)](#9-cryptography-wstg-cryp)
10. [业务逻辑 (WSTG-BUSL)](#10-business-logic-wstg-busl)
11. [客户端 (WSTG-CLNT)](#11-client-side-wstg-clnt)
12. [文件上传](#12-file-upload)
13. [API 安全](#13-api-security)
14. [报告与复测](#14-reporting--retest)
15. [参考工具](#15-reference-tools)
## 0. 测试前准备与范围
- [ ] **定义范围:**域名/IP 范围、模块/功能、环境(生产环境 vs. 预发环境)。
- [ ] **测试类型:**黑盒、**灰盒**(推荐——拥有多个权限级别的账号:只读用户、普通用户、管理员)或白盒。
- [ ] **交战规则:**测试时间窗口、避免 DoS 攻击、开始前备份、紧急联系渠道。
- [ ] **包含/排除项:**安装/设置脚本、备份工具、第三方集成——在还是不在测试范围内?
- [ ] **授权:**签署的授权书 + 存档的 NDA。
## 1. 信息收集 (WSTG-INFO)
- [ ] 通过 headers 和错误页面指纹识别服务器和技术栈(语言/运行时、Web 服务器、数据库版本)。
- [ ] 检查 `robots.txt`、`sitemap.xml`、manifest、service workers (`sw.js`) 及其他 PWA 文件。
- [ ] 枚举路径和文件(dirbuster/feroxbuster/ffuf)——使用普通浏览器的 User-Agent 以绕过基于 UA 的拦截。
- [ ] 查找暴露的敏感文件:`.env*`、`.git/`、`*.bak`、`*.sql`、`*.config`、`composer.*`、`package.json`、`*.yml`、依赖锁定文件。
- [ ] 分析客户端 JavaScript(源代码、注释、硬编码的密钥、隐藏的 endpoint)。
- [ ] 通过搜索引擎 + Wayback Machine + 公共泄露(GitHub、Pastebin、gists)查找机密信息。
- [ ] 尝试直接访问敏感的服务器端文件(bootstrap、config、安全核心、安装 SQL)。
## 2. 配置与部署 (WSTG-CONF)
- [ ] 检查安全 headers(CSP、HSTS、X-Frame-Options/frame-ancestors、X-Content-Type-Options、Referrer-Policy、COOP/COEP/CORP)。
- [ ] 分析 CSP 绕过(nonce 重用、`unsafe-inline`/`unsafe-eval`、过于宽松的白名单域名、JSONP gadget)。
- [ ] 测试 HTTP 方法(OPTIONS/PUT/DELETE/TRACE/TRACK)和 HTTP 动词篡改。
- [ ] 审查 cookie 属性(HttpOnly、Secure、SameSite、Domain/Path)。
- [ ] **Web 服务器配置:**验证文件访问限制在生产环境中是否实际生效。为一种服务器编写的规则(例如 Apache 上的 `.htaccess`)在其他服务器上(例如 nginx)会被**静默忽略**——将任何漏洞提升为严重级别。
- [ ] 测试 TLS/SSL(协议版本、密码套件、证书有效性、HSTS preload)。
- [ ] 查找详细的错误消息 / 堆栈跟踪 / 版本披露。
- [ ] 查找暴露的管理或管理界面(`/admin/*`、数据库管理面板、安装/设置 endpoint)。
- [ ] 测试安装/设置的关闭开关和 IP 白名单——它们在生产环境中是否实际生效?
## 3. 身份管理 (WSTG-IDNT)
- [ ] 通过登录 / 密码重置 / 注册响应进行用户枚举(有效和无效用户的回复是否不同?)。
- [ ] 账号注册策略——谁可以创建账号,以及通过哪些 endpoint?
- [ ] 测试特权用户创建 endpoint——未经授权的攻击者能否创建账号或分配角色?角色白名单是否得到执行?
- [ ] 枚举角色和权限,并将它们映射到账号。
## 4. 身份验证 (WSTG-ATHN)
- [ ] 针对登录的暴力破解——验证账户锁定(例如 N 次尝试)和基于 IP 的速率限制。
- [ ] 锁定绕过:账号轮换、header 欺骗(`X-Forwarded-For` **绝不**应影响受信任的客户端 IP——服务器应使用真实的套接字地址)。
- [ ] 撞库和弱密码接受度。
- [ ] 密码哈希强度(具有适当成本的 bcrypt/argon2)以及登录时的时序攻击。
- [ ] “记住我”逻辑、会话过期和完全注销(服务器端失效)。
- [ ] **MFA:**TOTP 绕过、验证码重用、对验证码的暴力破解、通过替代流程绕过,以及当 MFA 存储/表不可用时的失败时开放与失败时关闭行为。
- [ ] **密码更改/重置:**token 强度、其他会话的失效、URL/referrer/日志中没有 token 泄露。
- [ ] **设置/安装密码门:**暴力破解、绕过、解锁后的会话固定。
## 5. 授权 (WSTG-ATHZ)
- [ ] **水平 IDOR:**通过在每个 endpoint(报告、仪表板、财务、记录)上更改 `id` 来访问其他用户/租户的记录。
- [ ] **垂直越权:**低权限用户能否通过直接链接访问管理功能?
- [ ] **租户/部门范围界定:**尝试使用未经授权的账号切换上下文(例如 `?dept=` / `?org=` 参数)——必须失败。
- [ ] **扁平访问模型:**任何经过身份验证的用户都可以写入操作数据的地方——验证服务器端是否存在针对每个操作的角色检查。
- [ ] 在没有权限的情况下强制浏览到每个管理 endpoint。
- [ ] 大规模赋值 / 参数篡改(`role`、`department_id`、`is_admin`、`owner_id` 字段)。
- [ ] 通过权限密钥中的大小写差异或规范化怪癖绕过授权检查。
## 6. 会话管理 (WSTG-SESS)
- [ ] Session ID 的随机性、长度和熵。
- [ ] 登录后的 Session ID 重生成(会话固定)。
- [ ] **单一活动会话:**如果强制执行,验证其他设备是否确实被踢出(token-hash 绑定)。
- [ ] 空闲超时和绝对最大会话生命周期。
- [ ] **CSRF:**在每个更改状态的 POST/PUT/DELETE 上尝试伪造——测试 token 防护绕过以及任何跳过 CSRF 防护的 endpoint。
- [ ] Cookie 固定/盗窃(XSS → 会话)和 IP 绑定。
## 7. 输入验证 (WSTG-INPV)
- [ ] 每个参数上的 **SQL / NoSQL Injection**(手动 + sqlmap)——尤其是 `ORDER BY` / 动态列名、搜索和过滤器。
- [ ] **XSS** ——反射型、存储型和 DOM 型。重点关注富文本字段、国际化输入以及通过 `innerHTML`/`.html()` 写入的 AJAX 响应。
- [ ] **Command Injection** ——验证危险执行函数是否已禁用/避免。
- [ ] **LFI/RFI** 和动态 include/require 逻辑。
- [ ] 上传/下载 endpoint 上的 **Path Traversal**。
- [ ] 任何 URL 获取 / 导入 / webhook 功能上的 **SSRF**。
- [ ] 任何 XML 处理上的 **XXE**。
- [ ] 用户可控输入上的 **不安全反序列化**。
- [ ] 导出(Excel/CSV/Sheets)中的 **CSV/Formula Injection**。
- [ ] 重定向/返回 URL 参数上的 **Open Redirect**。
- [ ] **Host Header Injection** 和 HTTP Request Smuggling。
- [ ] 任何服务器端渲染模板中的 **模板注入 (SSTI)**。
## 8. 错误处理 (WSTG-ERRH)
- [ ] 通过错误导致的信息泄露(文件路径、查询语句、版本、请求 ID、内部主机名)。
- [ ] 组件失败(数据库、速率限制存储、MFA 存储、缓存)时的失败时开放与失败时关闭行为。
## 9. 密码学 (WSTG-CRYP)
- [ ] 静态敏感数据的加密和密钥强度。
- [ ] 应用程序机密信息/密钥——强度、轮换以及泄露后的爆炸半径(通常在 `.env` 备份中暴露)。
- [ ] 通过 HTTP 发送的敏感数据(必须为 HTTPS)+ cookie 的 `Secure` 标志。
- [ ] Token 随机性(CSRF、会话、重置、MFA 恢复)——必须使用 CSPRNG(`random_bytes`/`crypto`),切勿使用弱的 `rand()`。
## 10. 业务逻辑 (WSTG-BUSL)
- [ ] **审批/财务工作流:**跳过审批步骤、自我审批、审批后的价值篡改、竞态条件。
- [ ] 绕过预算/数量/日期限制。
- [ ] 请求重放和并发处理 (TOCTOU)。
- [ ] 通过直接访问或乱序请求绕过工作流顺序。
## 11. 客户端 (WSTG-CLNT)
- [ ] DOM XSS、`postMessage` 滥用、`localStorage`/`sessionStorage` 中的敏感数据。
- [ ] CORS 配置错误、点击劫持(`frame-ancestors`)、标签页劫持(不带 `rel=noopener` 的 `target=_blank`)。
- [ ] 具有已知 CVE 的过时 JS 库 (retire.js)。
## 12. 文件上传
- [ ] 扩展名/MIME 白名单绕过(双扩展名、magic bytes、null byte)。
- [ ] 上传可执行文件并尝试访问它——服务器是否在上传目录中执行了它?
- [ ] 文件名中的 Path Traversal、zip-slip、zip bomb、大小限制。
## 13. API 安全
- [ ] 每个 endpoint 上的身份验证/授权——`/api/*` 和 AJAX endpoint 是否确实返回了 401/403?
- [ ] BOLA/BFLA (OWASP API Top 10)、过度数据暴露、速率限制。
- [ ] Content-Type 强制执行、JSON injection、大规模赋值。
- [ ] GraphQL 专用:introspection 暴露、batching/aliasing 滥用、深度/复杂度限制。
## 14. 报告与复测
- [ ] 包含 CVSS v3.1 评分 + 复现步骤 + 证据的报告。
- [ ] 严重性分类 + 业务影响 + 修复指导。
- [ ] 修复后的**复测**以确认漏洞已关闭。
- [ ] 将发现的问题映射到 OWASP ASVS L2(以及任何适用的合规框架)以进行保证。
## 15. 参考工具
Burp Suite · OWASP ZAP · sqlmap · ffuf / feroxbuster · nuclei · nikto · testssl.sh · Retire.js · nmap · Semgrep / CodeQL (SAST) · 自定义脚本。
## 许可证
基于 [MIT 许可证](LICENSE) 发布。在使用时请注明出处。
基于 OWASP WSTG v4.2、OWASP ASVS L2、OWASP API Security Top 10、PTES 和 NIST SP 800-115。*
标签:GitHub, StruQ, Web安全, 安全测试, 实时处理, 攻击性安全, 检查清单, 蓝队分析, 防御加固