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报告查看器, 二进制利用, 协议分析, 堆溢出, 多线程, 安全实验, 安全防御评估, 权限提升, 测试用例, 漏洞复现, 版权保护, 编程工具, 网络安全, 请求拦截, 远程代码执行, 隐私保护, 靶场