mcpField
W
wooyun-legacy

wooyun-legacy

github.com/trailofbits安全522105 次安装15 周前更新
代码仓库

关于 wooyun-legacy

wooyun-legacy 是基于 2010 至 2016 年 WooYun 案例整理的 Web 漏洞分析知识库,提供经授权安全测试和代码审查所需的测试模式、清单与防护建议。

主要功能

  1. 01Web 漏洞模式与检查清单
  2. 02覆盖注入、XSS 和访问控制
  3. 03攻击面梳理指导
  4. 04测试优先级框架
  5. 05常见漏洞的缓解建议

适用场景

  1. 01规划经授权的 Web 应用渗透测试
  2. 02审查服务端或客户端代码
  3. 03编写安全测试用例与清单
  4. 04评估 Web 漏洞修复效果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/trailofbits/skills-curated --skill wooyun-legacy

安装后在 Claude Code 中输入/wooyun-legacy确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
bank-penetration.md
command-execution.md
file-upload.md
info-disclosure.md
logic-flaws.md
path-traversal.md
sql-injection.md
telecom-penetration.md
unauthorized-access.md
xss.md
references/checklists/
command-execution-checklist.md
csrf-checklist.md
file-upload-checklist.md
info-disclosure-checklist.md
logic-flaws-checklist.md
misconfig-checklist.md
path-traversal-checklist.md
rce-checklist.md
sql-injection-checklist.md
ssrf-checklist.md
unauthorized-access-checklist.md
weak-password-checklist.md
xss-checklist.md
xxe-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:不刷新、可重复使用、可暴力破解、仅在客户端验证

测试方法:

  1. 梳理业务流程 -> 绘制状态转换图
  2. 找出关键检查 -> 哪些参数会决定结果
  3. 尝试绕过 -> 修改参数 / 跳过步骤 / 重放 / 竞态
  4. 验证影响 -> 证明危害范围

核心防御:在服务器端验证所有业务关键逻辑。


其他类别

这些类别根据案例数据整理而来,但没有完整的参考文档。每个类别都包含从真实案例中提取的测试检查清单。

类别检查清单
CSRFcsrf-checklist.md
SSRFssrf-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对电信运营商基础设施的渗透测试

这些示例展示了单个漏洞如何串联起来,形成完整的入侵场景。


测试优先级框架

高优先级(优先测试)
  1. SQL 注入 — 可直接访问数据,案例数量最多(27,732)
  2. 命令执行 — OS 级别的入侵
  3. 文件上传 — 通过 webshell 执行任意代码
中优先级
  1. 未授权访问 — 案例数量第二多(14,377)
  2. 业务逻辑漏洞 — 因应用而异,难以自动化
  3. XSS — 会话劫持、钓鱼
低优先级(但仍然重要)
  1. 路径遍历 — 文件读取,有时也可写入
  2. 信息泄露 — 有助于侦察,并可用于串联攻击
  3. CSRF/SSRF/XXE — 严重程度取决于具体情境

防御速查表

漏洞核心防御实施方式
SQL 注入参数化查询PreparedStatement / ORM
XSS输出编码基于上下文的转义 + CSP
命令执行避免使用 shell使用 execFile 而非 exec,并采用允许列表
文件上传严格验证扩展名采用允许列表、重命名、隔离
路径遍历规范路径解析路径 + 根据允许列表进行验证
未授权访问访问控制身份认证 + 授权 + 会话管理
逻辑漏洞服务器端检查在服务器端验证所有业务逻辑
信息泄露尽量减少暴露使用自定义错误,生产环境中不启用调试

关键洞察

此数据库中的全部 88,636 个漏洞都有一个共同的根本原因: 开发者的设想与攻击者实际提供的内容之间存在差距。有效的安全测试意味着系统性地挑战每个信任边界上的每项假设。

从数据中总结出的四项原则:

  1. 边界思维 — 所有漏洞都发生在信任边界上
  2. 数据流追踪 — 完整追踪数据从输入到输出的全过程
  3. 挑战假设 — 质疑每一项“显而易见”的验证
  4. 链式组合 — 单个严重性较低的发现会组合成严重的攻击路径

评论

支持 Markdown