WooYun 业务逻辑漏洞方法论
22,132 个真实漏洞案例 · 6 个领域 · 33 类漏洞
Extended trigger keywords (not in description due to length limits): Implicit black-box testing: "看看这个功能有没有问题"、"这个流程有漏洞吗"、"怎么绕过这个限制"、"订单/支付/退款流程测试"、"这个系统安全吗"、"接口有没有风险"、"check this API"、"is this flow secure"、"review this for issues". Tools & techniques: 抓包分析、Burp Suite、拦截请求、修改参数、重放攻击、并发测试、遍历ID、爆破、薅羊毛、刷单、套利、风控绕过、短信轰炸、接口滥用、未授权接口、任意文件、数据泄露、信息收集、子域名、目录扫描、指纹识别、intercept、replay、fuzz、enumerate、brute force、rate limiting bypass、coupon abuse.
业务逻辑漏洞无法通过扫描器发现。它们存在于开发者的本意与应用实际允许的行为之间的空隙中。本方法论教会你像编写代码的开发者一样思考,像滥用应用的用户一样发起攻击。
数据基础: WooYun(2010-2016),中国最大的漏洞披露平台。
漏洞严重性优先级
测试应优先考虑高危漏洞类别。下表按 WooYun 数据集中高危发现的比例排序——百分比越高,代表关键影响的可能性越大。
排名 漏洞类别 案例数 高危占比 领域
1 密码重置 777 88.0% 认证
2 任意账号 220 86.4% 授权
3 提现 59 83.1% 金融
4 金额篡改 176 83.0% 金融
5 余额篡改 113 77.9% 金融
6 任意用户注册 24 75.0% 授权
7 逻辑漏洞 266 74.8% 逻辑流
8 订单篡改 1,227 74.2% 金融
9 价格篡改 70 74.3% 金融
10 配置不当 1,796 72.6% 配置
11 任意操作 40 72.5% 授权
12 支付绕过 1,056 68.7% 金融
13 设计缺陷 1,391 65.3% 逻辑流
14 信息泄露 4,858 64.7% 信息
15 越权 1,705 62.3% 授权
16 弱口令 7,513 58.2% 认证
四阶段方法
每个阶段都建立在前一阶段的基础上。跳过任何阶段会导致浅层测试,无法发现扫描器无法找到的逻辑漏洞。
第一阶段:业务流程映射
在测试任何端点之前,理解应用做了什么,以及资金、数据和权限如何在其中流动。
理解业务
-
这个应用做什么?(电商、银行、社交、SaaS)
-
主要参与者是谁?(匿名用户、普通用户、管理员、商户、API 客户端)
-
收入模式是什么?(资金如何流动?)
-
哪些数据敏感?(个人信息、财务数据、医疗数据、凭证)
映射用户旅程
-
注册 → 登录 → 核心操作 → 登出
-
购买 → 支付 → 履行 → 退款
-
密码重置 → 验证 → 新密码
-
管理员 → 用户管理 → 权限分配
识别状态转移
对每个业务流程:
-
列出所有状态(待审、活跃、已支付、已发货、已退款)
-
列出所有有效转移(待审→已支付、已支付→已发货)
-
问题:能否强制执行无效转移?(待审→已发货)
-
问题:能否反向转移?(已支付→待审)
映射信任边界
-
客户端 vs 服务器:哪些验证仅在客户端进行?
-
用户 vs 管理员:什么分隔了权限级别?
-
租户 vs 租户:什么防止跨租户访问?
-
内部 vs 外部:哪些假设了受信任的内部来源?
第二阶段:假设形成
使用下面的参考文件形成特定领域的假设。每个领域文件包含详细的攻击模式矩阵、测试清单和防御模式,这些都源自数千个真实的 WooYun 案例。
第一层:领域参考(方法论 + 攻击模式矩阵) — 优先加载
领域 参考文件 案例数
认证绕过、凭证缺陷 authentication-domain.md 8,846
权限绕过、IDOR、权限提升、任意操作 authorization-domain.md 6,838
支付、订单、余额、价格篡改 financial-domain.md 2,919
个人信息泄露、凭证泄露、调试信息 information-domain.md 6,446
状态机滥用、竞态条件、流程绕过 logic-flow-domain.md 1,679
配置不当、默认设置、加固缺陷 configuration-domain.md 1,796
第二层:深度分析手册(技术细节 + 根因分析) — 需要深入某个技术领域时加载
技术领域 知识文件 内容
命令执行 command-execution.md 系统命令注入、代码注入、表达式注入的完整攻击链
文件遍历 file-traversal.md 路径穿越、任意文件读取/下载的绕过技术
文件上传 file-upload.md 上传绕过(类型、后缀、内容检测)的 Payload 矩阵
信息泄露 info-disclosure.md 敏感信息暴露路径、调试接口、配置文件泄露
逻辑缺陷 logic-flaws.md 密码重置、支付绕过、验证码绕过的根因矩阵
SQL 注入 sql-injection.md 注入类型分类、WAF 绕过、盲注技巧
未授权访问 unauthorized-access.md 未授权接口发现、权限校验缺失模式
XSS xss.md 存储型/反射型/DOM XSS 的输入点和绕过
第三层:漏洞案例库(真实案例标题 + 高频 Payload) — 需要引用具体案例或 Payload 模式时加载
漏洞类型 案例文件 用途
SQL 注入 sql-injection.md 15 个典型案例 + 高频注入 Payload
命令执行 command-execution.md 15 个典型案例 + 命令执行 Payload
未授权访问 unauthorized-access.md 15 个典型案例 + 越权模式
弱口令 weak-password.md 15 个典型案例 + 高频弱口令
信息泄露 info-disclosure.md 15 个典型案例 + 泄露路径
XSS xss.md 9 个典型案例 + XSS Payload
配置不当 misconfig.md 15 个典型案例 + 错误配置模式
逻辑缺陷 logic-flaws.md 15 个典型案例 + 逻辑绕过
文件上传 file-upload.md 11 个典型案例 + 上传绕过 Payload
SSRF ssrf.md SSRF 攻击模式
CSRF csrf.md CSRF 利用模式
文件遍历 file-traversal.md 5 个典型案例 + 遍历 Payload
RCE rce.md 3 个典型案例 + RCE 链
XXE xxe.md XXE 注入模式
其他 other.md 13 个典型案例
渐进加载规则: 先读第一层(领域参考)确定测试方向,再按需读第二层(深度分析)获取技术细节,最后在需要引用具体案例或 Payload 时才读第三层(案例库)。不要一次性加载所有文件。
对每个领域,使用以下结构形成假设:
假设:[业务流程 X] 容易受到 [攻击模式 Y] 的攻击 原因:[来自侦查的证据——参数可见、缺乏服务器验证、ID 可预测] WooYun 模式:[与领域参考中匹配的模式] 影响:[业务影响——财务损失、数据泄露、账户接管] 测试:[具体的手动测试步骤]
第三阶段:针对性手动测试
业务逻辑需要手动测试,因为漏洞存在于应用如何解释业务规则的方式中,而不是扫描器可以匹配的技术特征。
准备测试账号
-
至少 2 个相同权限级别的账号(用于水平测试)
-
至少每个权限级别 1 个账号(用于垂直测试)
-
记录所有会话令牌、Cookie、ID
执行最小化测试
-
拦截特定请求(Burp/mitmproxy)
-
仅修改要测试的参数
-
观察:服务器是否验证?状态是否改变?
-
记录确切的请求/响应对
根据业务规则分析
-
应用是否在服务器端实施业务规则?
-
状态转移是否可以被强制无序执行?
-
是否可以访问/修改另一个用户的资源?
-
财务价值是否可以被篡改?
如果确认 → 第四阶段 · 如果否定 → 下一个假设 · 如果不确定 → 改变方法
第四阶段:影响评估与文档化
证明业务影响,而不仅仅是技术绕过。
发现:[标题]
- 严重级别:[严重/高/中/低]
- 领域:[认证/授权/金融/信息/逻辑/配置]
- WooYun 模式:[此发现匹配的历史模式]
- 业务影响:[财务损失、受影响用户数、数据范围]
- 重现步骤:
- [确切的步骤与请求/响应]
- [...]
- 补救:[服务器端修复,不是客户端创可贴]
真实案例
这些案例说明为什么业务逻辑测试很重要——每一个都代表 WooYun 研究者发现的真实漏洞:
案例 领域 影响
北京现代某平台越权遍历几百万身份证件/行驶证件 授权 通过顺序文件 ID 泄露数百万身份证件
M1905电影网 2588元套餐漏洞只需5毛 金融 通过后端自批准绕过实现 5000 倍价格差异
TCL统一认证平台可重置所有用户密码 认证 跨 N+ 个业务系统的完整账户接管
微糖主站SQL注入影响860W+患者/46W+医生 信息 860 万患者记录、46 万医生记录
中国铁通计费系统GetShell+生成充值卡 金融 任意充值卡生成 + 客户数据泄露
百合网某APP设计缺陷影响100W+女性手机号 逻辑流 100 万+ 电话号码通过设计缺陷泄露
需要避免的思维陷阱
测试业务逻辑时,要警惕这些导致浅层测试的常见理性化表现:
陷阱 现实
"扫描器可以覆盖业务逻辑" 扫描器找到的是特征,不是逻辑漏洞。没有扫描器能发现"订单状态可以跳过支付"。
"我测试了主流程,它是安全的" 22,132 个案例证明:逻辑漏洞存在于边界情况。
"只需改价格为 0.01" 那只是一个测试。WooYun 数据显示 17+ 种支付攻击模式。
"IDOR 很简单,只需改 ID" IDOR 有编码绕过、参数污染、JSON 嵌套。简单改 ID 只占案例的 30%。
"前端验证了,就没问题" 68.7% 的支付漏洞存在是因为验证仅在客户端。
"管理员面板需要不同的凭证" 58.2% 的未授权访问 = 完全没有身份验证的管理后台。
快速参考
阶段 关键活动 门槛标准
-
映射 业务流程、状态机、信任边界 完整流程图已记录
-
假设 基于 WooYun 模式的特定领域理论 ≥5 个按影响排序的假设
-
测试 手动拦截、单参数、精确观察 每个假设有证据支持或反驳
-
报告 业务影响、重现步骤、补救措施 带有 WooYun 模式分类的发现