该仓库包含一个针对 PgBouncer 崩溃的本地概念验证,该崩溃由易受攻击的 PgBouncer 版本中的整数溢出引起。其中包含的 Docker 环境会构建 PgBouncer 1.25.1,启动 PostgreSQL 后端,启用 SCRAM-SHA-256 身份验证,并针对 PgBouncer 运行 poc.py。
此内容仅用于受控实验室测试。请勿针对你不拥有或未经明确授权测试的系统运行。
poc.py - Python 概念验证客户端。docker-compose.yml - 本地 PostgreSQL、PgBouncer 和 PoC 运行器服务。postgres/init.sql - 创建测试数据库用户。pgbouncer/Dockerfile - 构建易受攻击的 PgBouncer 1.25.1。pgbouncer/pgbouncer.ini - 使用 SCRAM 身份验证的 PgBouncer 配置。pgbouncer/gen_userlist.py - 生成确定性 SCRAM 验证器。poc.py)构建并启动实验环境:
docker compose up --build
compose 文件会启动:
6432 端口上)。若只需启动这些服务并手动执行 PoC:
docker compose up --build postgres pgbouncer
python3 poc.py 127.0.0.1 6432
当易受攻击的 PgBouncer 进程遇到格式错误的 SASL 初始响应时, 客户端应报告连接被重置或 PgBouncer 变得不可达。 PoC 会检查此情况,并输出崩溃是否得到确认。
停止并移除实验容器:
docker compose down
PoC 的默认参数为:
127.0.0.16432testusertestdb自定义目标:
python3 poc.py <host> <port>