Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/ishwardeepp/cve-2025-1094-poc-postgre-sqli
漏洞分析代码分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育数据库安全实验室与实践

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
GitHub
ishwardeepp/cve-2025-1094-poc-postgre-sqli

CVE-2025-1094-PoC-Postgre-SQLi

概念验证模拟和分析 CVE-2025-1094,这是一个严重的 PostgreSQL SQL 注入漏洞。包含基于 Docker 的实验室设置、漏洞利用脚本、根本原因分析以及用于安全测试和教育的逐步演示。

查看仓库
62141年前尚未审核
分享

CVE-2025-1094 分析与模拟环境搭建

本详细分析于2025年3月14日进行,探讨了CVE-2025-1094(一个假设的高危PostgreSQL SQL注入漏洞),基于提供的模拟环境搭建和概念验证(PoC)执行。分析涵盖了漏洞介绍、根本原因、文件贡献、PoC步骤及缓解措施,并整合了模拟过程中的所有复杂细节。

漏洞介绍

CVE-2025-1094被描述为PostgreSQL中的一个严重SQL注入漏洞,影响17.3、16.7、15.11、14.16和13.19之前的版本,CVSS 3.1基础评分为8.1,表明对机密性、完整性和可用性有重大影响。它允许攻击者访问敏感数据或执行远程代码(RCE),并已在现实世界的攻击中被利用,例如影响17家企业客户的BeyondTrust事件(报道于 BleepingComputer),以及美国财政部入侵事件(详情见 The Register)。模拟于2025年3月14日进行,使用了Docker环境,配置了 server_encoding=EUC_TW 和 client_encoding=BIG5,这对于触发利用至关重要。PoC包括注入一个DO块来创建一个大对象,通过 pg_read_file 读取 /etc/passwd,使用 lo_put 将其写入大对象,并通过 lo_export 导出到 /tmp/payload,证实了编码不匹配在实现未授权文件访问中的作用。

根本原因分析

根本原因归类为CWE-149:引号语法中和不当,涉及PostgreSQL的libpq函数——PQescapeLiteral()、PQescapeIdentifier()、PQescapeString() 和 PQescapeStringConn()——在结果被用于构建 psql 命令行工具的输入时,未能正确中和引号语法。当 client_encoding 设置为 BIG5 且 server_encoding 设置为 EUC_TW 时(如我们的设置),这一问题会加剧,从而允许SQL注入。模拟需要EUC_TW和zh_TW.EUC_TW来创建不匹配,诸如 psycopg2 缺乏EUC_TW支持等问题通过先以UTF8连接再切换至BIG5得到解决。利用的成功依赖于通过 subprocess.run(["psql", ...]) 执行原始SQL,绕过了安全查询处理,详情见日志。

文件说明与贡献

设置中的每个文件在模拟CVE-2025-1094中都扮演着关键角色。以下以表格形式详细说明:

表:文件贡献总结

文件功能对PoC的贡献必要性
exploit.py发送带有DO块的POST请求,创建并导出大对象,读取 /etc/passwd。触发SQL注入,利用编码不匹配执行任意SQL命令。实现利用执行,对PoC影响至关重要。
app.pyFlask应用暴露 /vuln-endpoint,通过 psql 执行原始SQL。提供易受攻击的端点供利用。利用的入口点,是漏洞演示所必需的。
init.sql创建测试表,id VARCHAR(255) 用于字符串输入。为注入设置模式,确保有效载荷成功执行而不产生类型错误。设置数据库以进行利用,对SQL注入必不可少。
Dockerfile构建带有必要依赖的Flask应用容器。为端点部署创建隔离的应用服务。部署易受攻击的应用,对PoC可重现性至关重要。
docker-compose.yml定义并链接 db 和 app 服务,使用特定配置。编排设置,确保编码不匹配和服务依赖关系。链接服务,对环境搭建和隔离至关重要。
Dockerfile.db构建带有EUC_TW编码的PostgreSQL容器。创建带有必需编码的易受攻击数据库。设置具有所需编码的数据库,对触发漏洞至关重要。

概念验证步骤

2025年3月14日执行的PoC通过以下步骤展示了漏洞的影响,每一步均有详细说明:

  1. sudo docker compose up --build

    • 功能: 构建并启动Docker Compose服务(db 和 app),若需要则使用更新后的镜像创建容器,并将它们链接到 postgre_default 网络中。确保设置了易受攻击的环境,db 使用EUC_TW编码,app 在端口5000暴露 /vuln-endpoint,这对利用的编码不匹配和端点访问至关重要。
    • 为何需要: 设置利用工作所需的环境,确保所有服务正常运行且配置正确。
  2. curl -X POST http://localhost:5000/vuln-endpoint -d "input=test"

    • 功能: 向Flask应用的端点发送带有 input=test 的POST请求,验证连接和基本功能,期望返回"Executed"。确认应用正在运行且可以连接到数据库,确保环境已准备好进行利用。
    • 为何需要: 确保端点在执行利用前可访问且功能正常,符合PoC验证步骤。
    • 检查设置
  3. python3 cve-2025-1094-exploit.py

    • 功能: 运行利用脚本,发送带有DO块的POST请求,创建一个大对象,将 /etc/passwd 写入其中,并导出到 /tmp/payload,打印执行状态。触发SQL注入,利用漏洞读取 /etc/passwd,对演示CVE-2025-1094的影响至关重要,如日志中成功导出文件所示。
    • 为何需要: 执行核心利用,展示攻击者如何访问敏感数据,符合PoC模拟真实攻击的目标。
    • 运行利用
  4. sudo docker ps

    • 功能: 列出正在运行的容器,验证 postgre-app-1 和 postgre-db-1 是否启动。确认在运行利用前的设置,确保两个服务都处于活动状态,对PoC可靠性至关重要。向用户提供容器ID,供后续命令使用。
    • 为何需要: 确保所有必要服务正在运行,为进一步利用步骤提供检查点。
  5. sudo docker exec -it bash -c "LC_ALL=C ls -l /tmp/payload && LC_ALL=C cat /tmp/payload"

    • 功能: 在 postgre-db-1 容器中执行命令,列出并显示 /tmp/payload 内容(英文输出),验证利用结果(应显示 /etc/passwd)。通过检查文件确认利用成功,确保 /tmp/payload 包含敏感数据,符合PoC验证,并使用 LC_ALL=C 避免本地化乱码。
    • 为何需要: 通过检查输出来验证利用是否成功,确保敏感数据已按预期被访问。
    • 验证利用
  6. sudo docker exec -it psql -U postgres -d postgres -c "SELECT * FROM test;"

    • 功能: 在数据库容器中运行SQL查询,从 test 表中选择所有记录,验证利用中的INSERT语句(应显示"Exploit ran with loid ...")。确认利用对数据库的修改,确保DO块已执行,符合PoC验证,并验证 loid 日志记录。
    • 为何需要: 确保数据库已按预期被修改,为利用的影响提供额外验证。
  7. sudo docker compose down

    • 功能: 停止并移除容器、网络和卷,清理环境。确保释放资源,保持系统整洁,对于可重复的PoC执行且无残留至关重要。
    • 为何需要: 测试后进行清理,确保未来测试不受残留服务或数据影响,维持受控环境。

演示视频

在Vimeo上观看演示视频
点击观看PoC在Vimeo上的演示。

缓解措施

基于模拟洞察和行业指南,建议采取以下措施来缓解CVE-2025-1094:

  • 升级至已修补版本: 升级至PostgreSQL 17.3、16.7、15.11、14.16或13.19版本,可从 PostgreSQL下载页面 获取。
  • 输入验证: 验证所有用户输入的UTF-8编码以防止注入,如 Armosec博客 所建议。
  • 限制psql访问: 仅允许受信任用户访问 psql,减少攻击面。
  • 参数化查询或ORM框架: 使用参数化查询或ORM框架以防止SQL注入,增强安全性。
  • 多因素认证(MFA)和基于角色的访问控制(RBAC): 实施MFA和RBAC以增强访问控制,根据 Ox Security洞察。
  • 日志监控: 定期监控日志中的异常或可疑活动,以便及早检测潜在利用。
  • 稳健备份: 定期并稳健地备份数据库,以便从潜在入侵中恢复,确保数据完整性。
下载工具