Dubbo漏洞

Apache Dubbo 历史高危漏洞分析

系统性学习 Dubbo 框架的安全漏洞:协议分析、反序列化利用、Gadget Chain、配置中心投毒

配套代码环境:~/Desktop/AI/dubbo历史漏洞分析/


学习路径导航

按以下顺序学习,每篇笔记都有配套的代码和环境

第一阶段:打基础(必读)

序号 笔记 核心内容 预计时间
00 00-Java序列化机制 Serializable、readObject 自动调用、aced0005 1h
01 01-Gadget-Chain原理 POP 编程、Source/Gadget/Sink、ysoserial 使用 1.5h
02 02-经典Gadget-Chain详解 CC1/CC6/CB/ROME/Spring AOP 链完整调用链 3h
03 03-Hessian2-Gadget-Chain Hessian2 特有链、hashCode 触发、与 Java 原生对比 2h
04 04-Dubbo架构与协议分析 0xDABB 协议格式、攻击面地图、源码关键路径 2h

第二阶段:CVE 实战(按难度排序)

入门级

CVE 笔记 难度 攻击方式
CVE-2019-17564 05-CVE-2019-17564 ★☆☆ HTTP POST + ysoserial,curl 就能打
CVE-2021-32824 12-CVE-2021-32824 ★☆☆ Telnet 纯文本命令,不需要构造二进制包

进阶级

CVE 笔记 难度 攻击方式
CVE-2020-1948 06-CVE-2020-1948 ★★☆ 构造 Dubbo 协议二进制包 + Hessian2 payload
CVE-2020-11995 07-CVE-2020-11995 ★★☆ HashMap 嵌套绕过顶层检查
CVE-2021-30180 10-CVE-2021-30180 ★★☆ ZooKeeper 投毒 + YAML !! 标签
CVE-2021-30181 11-CVE-2021-30181 ★★☆ ZooKeeper 投毒 + Nashorn JS 执行

高级

CVE 笔记 难度 攻击方式
CVE-2021-25641 08-CVE-2021-25641 ★★★ 协议层 SerID 篡改,理解二进制协议攻击
CVE-2021-30179 09-CVE-2021-30179 ★★★ 泛化调用 + nativejava 反序列化
CVE-2021-43297 13-CVE-2021-43297 ★★★ 异常路径 toString 触发,需要精确控制 Hessian2 格式
CVE-2023-23638 14-CVE-2023-23638 ★★★ 多种绕过路径,补丁绕过思维
CVE-2023-29234 15-CVE-2023-29234 ★★★ Dubbo 3.x 畸形包攻击

第三阶段:融会贯通

笔记 核心内容
17-漏洞演进与攻防对抗史 五条攻击主线、防御演进、安全审计方法论
16-安全防御与加固 STRICT 模式、安全检查清单、生产加固

配套代码环境速查

漏洞复现三步走

1
2
3
4
5
6
7
8
9
# 1. 启动环境
cd ~/Desktop/AI/dubbo历史漏洞分析/environments/cve-xxxx
docker-compose up -d

# 2. 运行 PoC
python ~/Desktop/AI/dubbo历史漏洞分析/exploits/cve_xxxx.py -t 127.0.0.1 ...

# 3. 清理
docker-compose down

目录结构

environments/ — 每个 CVE 独立的 Docker 环境

dubbo-vuln-lab/ — Maven 靶场项目(6 种 Dubbo 版本 profile)

exploits/ — Python PoC 脚本 + Dubbo 协议构造工具

tools/ — ysoserial / marshalsec / dubbo-exp 使用指南


CVE 全景总览

按攻击面分类

Dubbo 协议直接攻击(端口 20880)

CVE-2020-1948, CVE-2020-11995, CVE-2021-25641, CVE-2021-43297

泛化调用攻击

CVE-2021-30179, CVE-2023-23638

HTTP 协议攻击(端口 8080)

CVE-2019-17564

配置中心投毒(ZooKeeper:2181)

CVE-2021-30180, CVE-2021-30181

Telnet 运维接口(端口 20880)

CVE-2021-32824

异常路径攻击

CVE-2021-43297, CVE-2023-29234

按 Gadget Chain 分类

ROME 链(hashCode→toString→getter)

CVE-2020-1948, CVE-2020-11995, CVE-2021-43297

CC/CB 链(readObject 触发)

CVE-2019-17564, CVE-2021-25641, CVE-2021-30179

Spring AOP 链(hashCode→JNDI)

CVE-2020-1948(可选链), CVE-2023-23638

XBean JNDI 链(setter→lookup)

CVE-2021-32824

SnakeYAML / Nashorn

CVE-2021-30180, CVE-2021-30181

时间线 & 影响

年份 CVE 数量 CVSS 9.8 趋势
2019 1 1 HTTP 协议
2020 2 2 Hessian2 攻击开始
2021 6 6 爆发年,多维度攻击
2023 2 2 补丁绕过 + Dubbo 3.x

必备工具

工具 用途 格式
ysoserial Java 原生反序列化 payload ObjectInputStream
marshalsec Hessian2 payload + JNDI 服务 Hessian2
dubbo-exp Dubbo 一键利用 自动处理
详细使用指南 → tools/README.md

下一章
00-Java序列化机制