stvm8/CVE-2026-2005_lab
GitHub: stvm8/CVE-2026-2005_lab
基于 Docker 的 CVE-2026-2005 PostgreSQL pgcrypto 堆溢出漏洞利用练习环境,覆盖从信息泄露、权限提升到容器内远程代码执行的完整利用链。
Stars: 0 | Forks: 0
# CVE-2026-2005 — PostgreSQL pgcrypto 堆溢出实验环境
一个独立的 Docker 实验环境,用于练习 CVE-2026-2005 漏洞的利用。该漏洞是 PostgreSQL 的 `pgcrypto` 扩展中的一个堆缓冲区溢出漏洞,允许在无需超级用户权限的情况下实现远程代码执行。
**受影响版本:** PostgreSQL ≤ 17.7 / 16.11 / 15.15 / 14.20 / 18.1
**修复版本:** 18.2, 17.8, 16.12, 15.16, 14.21(发布于 2026-02-12)
## 安装说明
**前提条件:** Docker, Docker Compose
```
git clone
cd CVE-2026-2005
docker compose up -d
```
PostgreSQL 将监听在 `127.0.0.1:5433`。
## 你的起点
你已经从应用的配置文件中获取了数据库凭据:
| 参数 | 值 |
|-----------|-------------|
| 主机 | 127.0.0.1 |
| 端口 | 5433 |
| 数据库 | targetdb |
| 用户名 | pentester |
| 密码 | pentester123 |
连接以确认访问权限:
```
psql -h 127.0.0.1 -p 5433 -U pentester -d targetdb
```
该账户在 `public` schema 上拥有 `CREATE` 权限。它**不是**超级用户。
## 目标
获取两个 flag 以完成实验。
**Flag 1 — 数据库权限提升**
```
SELECT * FROM flag_db;
-- Only readable after escalating to superuser within the DB session
```
**Flag 2 — 容器代码执行**
```
/var/lib/postgresql/flag.txt
-- Only readable after executing commands as the postgres OS user inside the container
```
## 漏洞背景
该缺陷位于 `pgcrypto/pgp-pubenc.c` 文件的 `pgp_parse_pubenc_sesskey()` 函数中。
在解密公钥加密的会话密钥数据包时,该函数从攻击者控制的 RSA/ElGamal 负载中将会话密钥长度推导为 `msglen - 3`,并在没有边界验证的情况下将其复制到固定的 32 字节缓冲区(`PGP_MAX_KEY`)中。攻击者可以写入超出缓冲区边界数百个字节。
该漏洞利用分为三个阶段进行:
1. **信息泄露** — 溢出暴露了相邻的堆元数据,泄露了 PIE 基址和堆地址
2. **任意写入** — 破坏 `dst` 结构体,将 `.data` 段中的 `CurrentUserId` 覆盖为 `10`(`BOOTSTRAP_SUPERUSERID`)
3. **容器 RCE** — 获得超级用户权限后,`COPY (SELECT '') TO PROGRAM ''` 将以 `postgres` 用户的身份**在容器内**执行操作系统命令。在没有 Docker 的实际部署环境中,这意味着获得了数据库主机的操作系统级别访问权限。
由于 ASLR 布局在连接到同一个 postmaster 进程的所有连接中是相同的,因此在一个连接上泄露的地址在下一个连接中仍然有效。
## 有用的参考资料
- NVD: CVE-2026-2005
- 技术分析文章:https://www.zeroday.cloud/blog/postgres-xint
- PostgreSQL pgcrypto 源码:`pgcrypto/pgp-pubenc.c`
- 符号解析:`objdump -t $(which postgres) | grep CurrentUserId`
## 环境销毁
```
docker compose down -v
```
## 法律声明
本实验环境仅用于授权的安全研究和教育目的。请仅在您拥有或已获得明确测试许可的系统上运行。
标签:CISA项目, CVE-2026-2005, Docker, OPA, pgcrypto, PostgreSQL, Web报告查看器, 二进制利用, 协议分析, 堆溢出, 多线程, 安全实验, 安全防御评估, 权限提升, 测试用例, 漏洞复现, 版权保护, 编程工具, 网络安全, 请求拦截, 远程代码执行, 隐私保护, 靶场