关于 wooyun-legacy
wooyun-legacy 是基于 2010 至 2016 年 WooYun 案例整理的 Web 漏洞分析知识库,提供经授权安全测试和代码审查所需的测试模式、清单与防护建议。
主要功能
- 01Web 漏洞模式与检查清单
- 02覆盖注入、XSS 和访问控制
- 03攻击面梳理指导
- 04测试优先级框架
- 05常见漏洞的缓解建议
适用场景
- 01规划经授权的 Web 应用渗透测试
- 02审查服务端或客户端代码
- 03编写安全测试用例与清单
- 04评估 Web 漏洞修复效果
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ trailofbits/ skills-curated --skill wooyun-legacy安装后在 Claude Code 中输入/wooyun-legacy确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/bank-penetration.mdcommand-execution.mdfile-upload.mdinfo-disclosure.mdlogic-flaws.mdpath-traversal.mdsql-injection.mdtelecom-penetration.mdunauthorized-access.mdxss.mdreferences/checklists/command-execution-checklist.mdcsrf-checklist.mdfile-upload-checklist.mdinfo-disclosure-checklist.mdlogic-flaws-checklist.mdmisconfig-checklist.mdpath-traversal-checklist.mdrce-checklist.mdsql-injection-checklist.mdssrf-checklist.mdunauthorized-access-checklist.mdweak-password-checklist.mdxss-checklist.mdxxe-checklist.md详细介绍
WooYun 漏洞分析知识库
从 WooYun 平台报告的 88,636 个真实漏洞案例(2010-2016)中提取的方法论和测试模式。
适用场景
此处描述的所有测试都必须仅针对已获得书面授权的系统进行。
- 对 Web 应用进行渗透测试
- 安全代码审查(服务端或客户端)
- 针对已明确授权测试的 Web 目标开展漏洞研究
- 构建安全测试用例或检查清单
- 评估 Web 应用的攻击面
- 审查修复措施的有效性
- 在获授权的安全测试场景中开展培训或教育
不适用场景
- 网络基础设施测试(防火墙、路由器、交换机)
- 移动应用二进制分析
- 恶意软件分析或逆向工程
- 仅用于合规的评估(不进行测试的 PCI-DSS、SOC2 检查清单)
- 实体安全评估
- 社会工程活动
- 云基础设施配置错误(IAM、S3 存储桶)——这些 需要云专用工具,而非 Web 漏洞模式
应摒弃的借口
这些捷径会导致遗漏发现。请予以摒弃:
- “WAF 会拦截”——WAF 可以被绕过;应测试应用 逻辑,而非中间件
- “这是内部应用,所以身份验证不重要”——内部应用也会通过 SSRF、横向移动和凭据复用而遭到 入侵
- “我们到处都使用参数化查询”——检查 ORM 误用、使用动态 SQL 的存储过程,以及二阶注入
- “框架会处理 XSS”——模板引擎有原始输出模式, JavaScript 上下文可绕过 HTML 编码,而 DOM XSS 完全存在于客户端
- “文件上传是安全的,因为我们会检查扩展名”——扩展名 检查可通过空字节、双扩展名、解析器 差异和竞争条件绕过
- “我们会在前端进行验证”——客户端验证是用户体验 功能,而非安全控制措施
- “没人会猜到那个 URL”——通过模糊处理实现安全,无法抵御 目录暴力破解、引荐来源泄露和 JS 源码分析
- “严重性低,不值得报告”——低严重性发现可能串联 成关键攻击路径
核心思维模型
Vulnerability = Expected Behavior - Actual Behavior
= Developer Assumptions + Attacker Input -> Unexpected State
Analysis chain:
1. Where does data come from? (Input sources)
-> GET/POST/Cookie/Header/File/WebSocket
2. Where does data flow? (Data path)
-> Validation -> Processing -> Storage -> Output
3. Where is data trusted? (Trust boundaries)
-> Client / Server / Database / OS / External service
4. How is data processed? (Processing logic)
-> Filter / Escape / Validate / Execute
5. Where does data end up? (Output sinks)
-> HTML / SQL / Shell / Filesystem / Log / Email
攻击面映射
+-------------------------------------------+
| Application Attack Surface |
+-------------------------------------------+
|
+-----------------------+-----------------------+
| | |
+----v----+ +-----v-----+ +-----v-----+
| Input | | Processing| | Output |
+---------+ +-----------+ +-----------+
| GET | | Input | | HTML page |
| POST | -> | validation| -> | JSON resp |
| Cookie | | Biz logic | | File DL |
| Headers | | DB query | | Error msg |
| File | | File op | | Log entry |
| Upload | | Sys call | | Email |
+---------+ +-----------+ +-----------+
SQL 注入
案例: 27,732 | 参考: sql-injection.md | 检查清单: sql-injection-checklist.md
高风险参数:id、sort_id、username、password、search、
keyword、page、order、cat_id
注入点检测:
- 字符串终止符:
' " ) ') ") -- # /* - 数据库指纹:
@@version(MSSQL)、version()(MySQL)、v$version(Oracle)
绕过技术:
- 空白字符:
/**/ %09 %0a () - 关键字:
SeLeCt sel%00ect /*!select*/ - 等号:
LIKE REGEXP BETWEEN IN - 引号:
0x十六进制、char()、concat()
核心防御:参数化查询(PreparedStatement / ORM 绑定)。
跨站脚本攻击(XSS)
案例: 7,532 | 参考: xss.md | 检查清单: xss-checklist.md
输出点:用户个人资料字段(昵称、简介)、搜索结果回显、 文件元数据(文件名、替代文本)、电子邮件内容(主题、正文)
绕过技术:
- 标签变体:
<ScRiPt> <script/x> <script\n> - 事件处理程序:
onerror onload onmouseover onfocus - 编码:HTML 实体、JS Unicode、URL 编码
- 协议处理程序:
javascript: data: vbscript:
核心防御:结合上下文进行输出编码 + 内容安全策略。
命令执行
案例数: 6,826 | 参考: command-execution.md | 检查清单: command-execution-checklist.md
入口点:系统命令封装(ping、traceroute、nslookup)、
文件操作(压缩、解压、图像处理)、代码求值
(eval、assert、preg_replace(/e))、框架漏洞
(Struts2、WebLogic、JBoss)
命令链:
- Linux:
; | || && \$()` - Windows:
& | || &&
绕过技术:
- 空白字符:
${IFS} $IFS$9 %09 < <> - 关键字:
ca\t ca''t c$@at /???/??t - 编码:
$(printf "\x63\x61\x74")、`echo Y2F0|base64 -d`
核心防御:避免调用 shell;优先使用 execFile 而非 exec,
并对可接受的输入设置允许列表。
文件上传
案例数: 2,711 | 参考: file-upload.md | 检查清单: file-upload-checklist.md
绕过检测:
- 客户端验证:修改 JS 或直接发送请求
- Content-Type:
image/gif标头 + PHP 代码正文 - 扩展名:
.php5 .phtml .pht .php. .php::$DATA - 内容检查:
GIF89a+<?php或基于图像的 webshell - 解析器差异:
/upload/1.asp;.jpg(IIS 6.0)
特定解析器漏洞:
- IIS 6.0:
/test.asp/1.jpg、test.asp;.jpg - Apache:
.php.xxx(未知扩展名回退) - Nginx:
/1.jpg/1.php(cgi.fix_pathinfo) - Tomcat:
test.jsp%00.jpg
核心防御:对扩展名设置允许列表、重命名上传文件、将文件存储在 webroot 之外,并在服务端验证内容类型。
路径遍历
案例数: 2,854 | 参考: path-traversal.md | 检查清单: path-traversal-checklist.md
高风险参数:file、path、filename、url、dir、
template、page、include、download
遍历载荷:
- 基本形式:
../../../etc/passwd - 编码形式:
%2e%2e%2f、..%252f、%c0%ae%c0%ae/ - 空字节:
../../../etc/passwd%00.jpg - Windows:
..\..\..\windows\win.ini
目标文件(Linux):/etc/passwd、/etc/shadow、
/proc/self/environ、/var/log/apache2/access.log
核心防御:解析规范路径,对照允许的目录进行验证,绝不直接在文件 路径中使用用户输入。
未授权访问
案例数: 14,377 | 参考: unauthorized-access.md | 检查清单: unauthorized-access-checklist.md
访问类型:
- 管理面板暴露:
/admin、/manager、/console - API 未经身份验证:缺少令牌验证、令牌可预测
- 暴露的服务:Redis(6379)、MongoDB(27017)、 Elasticsearch(9200)、Memcached(11211)、Docker(2375)
- IDOR:通过枚举 ID 实现水平权限提升
核心防御:对每个端点进行身份验证和授权、 会话管理、遵循最小权限原则。
信息泄露
案例数: 7,337 | 参考: info-disclosure.md | 检查清单: info-disclosure-checklist.md
泄露来源:包含堆栈跟踪的错误消息、暴露的 .git
或 .svn 目录、备份文件(.bak、.sql、.tar.gz)、
配置文件、调试端点、目录列表
核心防御:使用自定义错误页面、禁用目录列表、在生产环境中移除 调试端点,并审计可公开访问的文件。
业务逻辑漏洞
案例: 8,292 | 参考: logic-flaws.md | 检查清单: logic-flaws-checklist.md
漏洞模式:
- 密码重置:响应正文中包含验证码、跳过步骤、可控的重置令牌
- 绕过授权:水平越权(ID 枚举)、垂直越权(角色提升)
- 支付逻辑:篡改金额、操纵数量、叠加使用优惠券
- CAPTCHA:不刷新、可重复使用、可暴力破解、仅在客户端验证
测试方法:
- 梳理业务流程 -> 绘制状态转换图
- 找出关键检查 -> 哪些参数会决定结果
- 尝试绕过 -> 修改参数 / 跳过步骤 / 重放 / 竞态
- 验证影响 -> 证明危害范围
核心防御:在服务器端验证所有业务关键逻辑。
其他类别
这些类别根据案例数据整理而来,但没有完整的参考文档。每个类别都包含从真实案例中提取的测试检查清单。
| 类别 | 检查清单 |
|---|---|
| CSRF | csrf-checklist.md |
| SSRF | ssrf-checklist.md |
| 弱密码 | weak-password-checklist.md |
| 配置错误 | misconfig-checklist.md |
| 远程代码执行 | rce-checklist.md |
| XML 外部实体(XXE) | xxe-checklist.md |
注意: RCE 检查清单涵盖反序列化、OGNL 注入和特定框架中的远程代码执行,与上文“命令执行”参考资料侧重的 OS 命令注入不同。
方法论案例研究
真实世界的渗透测试方法示例(已匿名化):
| 案例研究 | 描述 |
|---|---|
| bank-penetration.md | 针对金融机构的多阶段攻击链 |
| telecom-penetration.md | 对电信运营商基础设施的渗透测试 |
这些示例展示了单个漏洞如何串联起来,形成完整的入侵场景。
测试优先级框架
高优先级(优先测试)
- SQL 注入 — 可直接访问数据,案例数量最多(27,732)
- 命令执行 — OS 级别的入侵
- 文件上传 — 通过 webshell 执行任意代码
中优先级
- 未授权访问 — 案例数量第二多(14,377)
- 业务逻辑漏洞 — 因应用而异,难以自动化
- XSS — 会话劫持、钓鱼
低优先级(但仍然重要)
- 路径遍历 — 文件读取,有时也可写入
- 信息泄露 — 有助于侦察,并可用于串联攻击
- CSRF/SSRF/XXE — 严重程度取决于具体情境
防御速查表
| 漏洞 | 核心防御 | 实施方式 |
|---|---|---|
| SQL 注入 | 参数化查询 | PreparedStatement / ORM |
| XSS | 输出编码 | 基于上下文的转义 + CSP |
| 命令执行 | 避免使用 shell | 使用 execFile 而非 exec,并采用允许列表 |
| 文件上传 | 严格验证 | 扩展名采用允许列表、重命名、隔离 |
| 路径遍历 | 规范路径 | 解析路径 + 根据允许列表进行验证 |
| 未授权访问 | 访问控制 | 身份认证 + 授权 + 会话管理 |
| 逻辑漏洞 | 服务器端检查 | 在服务器端验证所有业务逻辑 |
| 信息泄露 | 尽量减少暴露 | 使用自定义错误,生产环境中不启用调试 |
关键洞察
此数据库中的全部 88,636 个漏洞都有一个共同的根本原因: 开发者的设想与攻击者实际提供的内容之间存在差距。有效的安全测试意味着系统性地挑战每个信任边界上的每项假设。
从数据中总结出的四项原则:
- 边界思维 — 所有漏洞都发生在信任边界上
- 数据流追踪 — 完整追踪数据从输入到输出的全过程
- 挑战假设 — 质疑每一项“显而易见”的验证
- 链式组合 — 单个严重性较低的发现会组合成严重的攻击路径