# 银行 / 金融行业渗透 playbook

> 视角：黑盒，针对国内银行（国有/股份制/城商/民营）+ 第三方支付 + 聚合支付 + 互金平台。
> 数据基础：金融领域 2,919 个真实案例，68%–88% 高危占比。

---

## 1. 一句话定位

银行/金融业的漏洞特点：**资金类漏洞占比小但单发价值高**，**鉴权层 + 接口层是主战场**。一个支付绕过的赏金可以等于普通 SaaS 一年的全部收益。

不要盯着"网银 RCE"——那是十年前的玩法。今天值钱的是：
- 第三方支付 / 聚合支付的接口签名缺陷
- 手机银行 APP 的接口（鉴权往往比 Web 弱）
- 直销银行 / 微信银行的"轻量化"业务系统
- 信贷 / 风控管理后台的越权

---

## 2. 攻击面分层模型

```
┌─────────────────────────────────────────────────────────────────────────┐
│                          第一层：互联网边界                              │
├─────────────────────────────────────────────────────────────────────────┤
│  网银系统 │ 手机银行 │ 微信银行 │ 直销银行 │ 信用卡中心 │ 官网/活动页    │
│  小程序   │ APP      │ H5       │ 公众号   │ 营销活动   │ 客服系统       │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
┌─────────────────────────────────────────────────────────────────────────┐
│                          第二层：接口/通道层                             │
├─────────────────────────────────────────────────────────────────────────┤
│  支付接口 │ 银联通道 │ 快捷支付 │ 代扣代付 │ 聚合支付 │ 开放银行 API     │
│  发卡接口 │ 风控接口 │ 短信网关 │ 二次认证 │ 数字证书 │ 人脸识别         │
└─────────────────────────────────────────────────────────────────────────┘
                                    │
┌─────────────────────────────────────────────────────────────────────────┐
│                          第三层：内部系统层                              │
├─────────────────────────────────────────────────────────────────────────┤
│  核心银行 │ 信贷系统 │ 风控系统 │ 反洗钱   │ 客户管理 CRM │ 报表系统    │
│  对账系统 │ 清算系统 │ 票据系统 │ 衍生品   │ 内部 OA      │ 邮件系统    │
└─────────────────────────────────────────────────────────────────────────┘
```

---

## 3. 高危漏洞类型分布（金融特化）

### 3.1 第一梯队：资金类（68%–88% 高危）

| 漏洞类型 | 高危占比 | 银行特有场景 | 主要 playbook |
|---------|---------|-------------|--------------|
| 密码重置 | 88.0% | 网银/手机银行登录密码、交易密码、支付密码 | `logic-flaws.md` §3.1 |
| 提现 | 83.1% | 转账限额绕过、提现校验缺陷 | 本篇 §4.3 |
| 金额篡改 | 83.0% | 转账金额、理财金额、还款金额 | `logic-flaws.md` §3.4 |
| 余额篡改 | 77.9% | 账户余额、积分、虚拟卡 | 本篇 §4.4 |
| 订单篡改 | 74.2% | 信用卡订单、理财下单 | `logic-flaws.md` §3.4 |
| 价格篡改 | 74.3% | 理财产品价格、增值服务 | `logic-flaws.md` §3.4 |
| 支付绕过 | 68.7% | 快捷支付、代扣代付、跨行转账 | 本篇 §4.1 |

### 3.2 第二梯队：鉴权 / 信息类

| 漏洞类型 | 案例数 | 银行特化场景 |
|---------|-------|------------|
| 弱口令 | 7,513 | 网银运维后台、ATM 监控、行内 OA |
| 越权 | 1,705 | 查看他人账户 / 流水 / 客户信息 |
| 验证码 | 334 | 登录、转账、密码重置、人脸识别 |
| 信息泄露 | 4,858 | 客户 PII / 交易记录 / 信贷资料 |

### 3.3 第三梯队：客户端 / 移动端

银行特有，通用 SRC 库少有覆盖：

- **手机银行 APP 加固绕过**：Frida / Objection 反调试
- **SSL Pinning 绕过**：Frida hook
- **本地存储敏感数据**：sqlite / sharedPrefs / 内存中的明文密码
- **签名算法逆向**：交易请求签名（HMAC / RSA）
- **小程序密钥硬编码**：微信小程序包内的 AppSecret / 签名 key

---

## 4. 银行特有攻击场景

### 4.1 第三方/聚合支付接口（重点矿区）

```
攻击面：
├── 商户密钥泄露（GitHub/Gitee/外包代码）
├── 异步通知（notify_url）签名缺陷
├── 同步回调（return_url）参数可控
├── 金额二次校验缺失
├── 商户号越权（A 商户的 mch_id 用 B 商户密钥）
└── 测试支付网关凭据（沙箱密钥用于生产）
```

**探针清单**：

```bash
# 1. notify_url 重放
curl -X POST https://target/pay/notify \
  -d "out_trade_no=ORDER001&total_fee=100&trade_status=SUCCESS&sign=XXX"
# 看是否多次发货

# 2. 签名校验缺失测试
# 删除 sign / 置空 sign / 用错误 sign
curl -X POST https://target/pay/notify -d "out_trade_no=ORDER001&trade_status=SUCCESS"

# 3. 修改 total_fee 但保持 sign
# （多数实现是先校 sign 再处理金额，但有少数实现把 sign 算法暴露在前端）
```

**关键参数**：`amount` / `total_fee` / `price` / `total` / `out_trade_no` / `trade_no` / `mch_id` / `sign` / `signature` / `appid` / `nonce_str` / `notify_url` / `return_url` / `attach`。

### 4.2 手机银行 APP

```
APP 渗透流程：
1. 抓包突破：绕过 SSL Pinning（Frida / Objection）
2. 逆向分析：脱壳 → jadx 反编译 → 签名算法逆向 → 密钥提取
3. Hook 测试：绕过人脸/指纹/手势校验、修改限额检测
4. 接口比对：APP 接口 vs Web 接口的差异（APP 接口往往鉴权更弱）
5. 内部 SDK：埋点/推送/客服 IM 的 SDK 是否暴露内部接口
```

**APP 鉴权常见缺陷**：
- APP 接口仅校验 token，不校验角色
- APP 接口跳过 Web 的 WAF / 风控
- APP 接口的 user-agent / 客户端类型 校验可绕过（仿造 `User-Agent: BankApp/1.0`）

详见 `playbooks/mobile.md`。

### 4.3 提现 / 转账（83.1% 高危）

```
转账接口测试矩阵：
1. 金额向负
   amount = -1000  → 收款方扣款，发款方加款
2. 限额绕过
   - 改 amount 数据类型：number → string ("100")
   - 用科学计数：1e10
   - 用极小小数：0.001 × 1000 次（凑齐限额）
3. 双花 / 竞态
   并发提现 N 次余额额度
4. 改收款方 (to_account / payee_id)
   把转账目标改成攻击者控制的账户
5. 状态机
   - 改 status=SUCCESS（伪造已成功）
   - 重放成功的转账回调
```

**红线**：
- 不实际向陌生账户转账。所有金额测试用研究员自有账号 → 自有账号。
- 极小金额（0.01 元）即停。
- 任何"返还" / "撤回"操作都要立即截图存证，便于后续对账。

### 4.4 余额 / 积分 / 卡券

| 攻击 | 方法 |
|------|------|
| 负向转账 | `amount=-100` |
| 余额计算绕过 | 客户端请求中改 `balance` 参数 |
| 小数精度漏洞 | 提现 0.001 × 10000 次（舍入累积）|
| 卡券生成 | 任意调发卡接口 |
| 积分汇率 | 兑换接口里改"1 积分 = X 元"的值 |

真实案例：
- 神舟专车充值流程免输信用卡交易密码（套现绕过）
- 鱼泡泡 APP 任意用户登录可影响余额（sign 绕过）
- 宁波银行直销银行看任意卡余额
- 中国平安某处验证逻辑问题导致管理商品价格

### 4.5 验证绕过（金融行业特别版）

#### 短信验证码

```
├── 爆破：4–6 位数字 + 100 线程，30 秒爆完
├── 并发：绕过频率限制
├── 复用：同一验证码用多次
├── 回显：响应中泄露
├── 万能：测试期 0000 / 1234
└── 跨流程：注册流程的码用于重置
```

#### 人脸识别

```
├── 照片攻击：纸照 / 屏幕回放
├── 视频攻击：眨眼 / 摇头视频
├── Hook 返回值：Frida hook 人脸校验函数
├── 接口重放：重放成功的人脸 API 响应
└── 替换人脸数据：抓包修改 face_data 字段
```

#### U 盾 / 数字证书

> 大多数 U 盾相关攻击在 2020 年后已被生物识别+硬件 TEE 取代，仅在企业网银仍少量在线。

#### 交易签名

```
├── 签名密钥硬编码 / 通过 GitHub 找到
├── 关键字段未参与签名（如改 amount，sign 不变也通过）
├── 签名校验可选（删 sign 字段直接通过）
└── 签名算法降级（RSA → HMAC → MD5 → 无）
```

---

## 5. 高价值目标资产

| 目标系统 | 价值 | 黑盒可见度 |
|---------|-----|-----------|
| 核心银行系统 | ⭐⭐⭐⭐⭐ | 极低（内网） |
| 信贷系统 | ⭐⭐⭐⭐ | 中（部分对外暴露审批/查询接口） |
| 风控系统 | ⭐⭐⭐⭐ | 低 |
| 反洗钱系统 | ⭐⭐⭐⭐ | 低 |
| CRM / KYC | ⭐⭐⭐ | 中 |
| 客服 / 工单系统 | ⭐⭐ | 高（最容易突破） |
| 营销活动 / H5 | ⭐⭐ | 极高（最常见入口） |
| 信用卡中心 | ⭐⭐⭐⭐ | 中 |

**实战路径**：从营销活动 H5 / 客服系统 → 撞库 / 越权 → 客户 PII → 联动信用卡中心 → 信贷系统。

---

## 6. GetShell / 横向移动

### 6.1 边界设备

```
VPN / 网关漏洞：
├── Pulse Secure CVE-2019-11510
├── Fortinet CVE-2018-13379
├── Citrix CVE-2019-19781
├── 深信服 VPN 任意密码重置
└── 安恒 / 启明 / 天融信 设备弱口令

CDN 回源：
├── 找真实 IP（fofa "icon_hash" / 历史 DNS）
├── 直接打回源
└── 配置层：Host 头注入
```

### 6.2 第三方外包 / 供应链

```
供应链路径：
├── 外包公司 → 开发测试环境 → 正式环境
├── 设备供应商 → 预置账号
├── 服务提供商 → 短信 / 身份核验 / 反欺诈 SDK
└── 印刷厂 / 卡商 → 卡号 / 加密密钥
```

### 6.3 GetShell 优先级（金融场景）

```
1. Struts2 RCE（S2-045/046/048/052/057/059）── 银行老系统常见
2. WebLogic 反序列化（CVE-2017-10271 / 2019-2725 / 2020-14882）
3. Shiro 反序列化（rememberMe）── 国产 OA / 工单系统常见
4. Fastjson RCE 1.2.x ── 接口层常见
5. Log4Shell ── 内部日志框架
6. 文件上传绕过 ── OA / CMS 编辑器
```

详见 `playbooks/rce.md` 和 `playbooks/file-upload.md`。

---

## 7. 实战 Checklist

### 7.1 信息收集
- [ ] 子域枚举（含 ipv6）
- [ ] APP / 小程序 / 公众号下载分析
- [ ] GitHub / Gitee / 码云代码搜索（公司名 + commitor 邮箱）
- [ ] 历史接口 Wayback Machine
- [ ] 微信小程序 + 公众号底部菜单的 H5
- [ ] 营销活动页 / 双 11 / 春节红包活动页
- [ ] 客服系统 / 工单系统的子域
- [ ] 信用卡中心独立子站

### 7.2 漏洞探测
- [ ] 弱口令（运维后台 / OA / 邮件）
- [ ] 业务逻辑（支付 / 转账 / 密码重置 / 信用卡分期）
- [ ] 越权（横向 / 纵向）
- [ ] 接口安全（签名 / 加密 / 重放）
- [ ] APP 客户端安全（脱壳 / Pinning / 本地存储）
- [ ] 第三方支付 notify_url 缺陷
- [ ] 验证码（短信 / 图形 / 人脸）
- [ ] 任意 X 子授权（任意账号 / 任意操作）

### 7.3 深度利用
- [ ] 支付金额篡改（自账→自账）
- [ ] 验证码并发爆破
- [ ] 人脸识别接口重放
- [ ] 并发条件竞争（提现 / 优惠券）
- [ ] 内部接口越权（仅限可证明）

---

## 8. 真实案例指纹（金融）

| 案例 | 一句话指纹 | 漏洞分类 |
|------|----------|---------|
| 中原银行 GetShell（影响财付通 / 支付宝）| 边界 Web RCE → 内网 | 边界 RCE |
| 通联支付文件遍历读取（Oracle EBS）| `/oracle.../read?path=` | 任意文件读 |
| 某第三方支付机构 SOAP 注入（DBA + 9 库）| WSDL 暴露 + WS 注入 | SQLi |
| 神舟专车充值免交易密码 | 客户端跳过 PIN | 支付绕过 |
| 鱼泡泡 APP 任意账号 | sign 字段空值绕过 | 任意账号 |
| 宁波银行直销银行看任意卡余额 | API 不校验账户归属 | IDOR |
| 百姓大药房 2000W PII + 余额 | 弱口令 + 后台越权 | 弱口令 |
| 中国平安 100W PII + 价格管理 | 鉴权 + 价格校验缺失 | 越权 |

---

## 9. 红线（金融行业 SRC 特别版）

- **绝不**：转账给陌生账户。研究员账号自转自即停。
- **绝不**：实测信用卡盗刷 / 套现 / 实物兑换。
- **绝不**：使用真实客户的身份证 / 银行卡 / 手机号测试。准备 5+ 个研究员名下的测试卡。
- **绝不**：扫描银行公开 IP 段（涉嫌违反《关键信息基础设施安全保护条例》）。仅扫漏洞奖励计划明确授权的资产。
- **绝不**：在生产环境留 webshell / cron / SSH 公钥。证明到 RCE 即停，立即清理 + 在报告中说明清理时间。
- **绝不**：数据外泄（即使是给厂方）。报告中只贴 1–3 条脱敏样本。

---

## 10. 与方法论 / 字典链接

```
methodology/05-srctimebox-priority.md   →  金融行业的 88% / 83% 重点漏洞
playbooks/logic-flaws.md                 →  支付 / 订单 / 密码重置详细
playbooks/arbitrary-x-authz.md           →  任意账号（86.4%）/ 任意操作
playbooks/oauth-saml-jwt.md              →  SSO / JWT / 联邦身份
playbooks/mobile.md                      →  手机银行 APP
playbooks/race-conditions.md             →  并发提现 / 优惠券
dictionaries/default-credentials-cn.md   →  网银 / OA / 监控的国产默认凭据
dictionaries/chinese-srcfingerprints.md  →  金融常见组件指纹（致远 OA / 用友 / 金蝶等）
```
