漏洞速递|CVE-2025-13780pgAdminRCE漏洞

admin 2025-12-23 15:53:45 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: pgAdmin存在CVE-2025-13780远程代码执行漏洞,其PLAIN恢复过滤器的正则未处理UTF-8BOM,导致攻击者可利用特殊字节序列绕过检测。pgAdmin调用psql时剥离BOM执行恶意元命令,引发RCE。受影响版本为9.10快照,9.11+版本不受影响。文档含代码分析、原理及PoC,建议用户升级并审查恢复逻辑。 综合评分: 85 文章分类: 漏洞预警,漏洞POC,漏洞分析,代码审计,WEB安全


cover_image

漏洞速递 | CVE-2025-13780 pgAdmin RCE漏洞

渗透Xiao白帽

2025年12月19日 18:39 北京

文章来源:TtTeam

pgAdmin 中为修复 Issue 9320 而引入的 PLAIN 恢复元命令过滤器,无法检测到以 UTF-8 字节顺序标记 (EF BB BF) 或其他特殊序列开头的 SQL 文件。该过滤器使用has_meta_commands()正则表达式扫描原始字节。由于正则表达式并未将这些字节视为可忽略项,因此诸如 ! 之类的元命令无法被检测到。当 pgAdmin 使用 --file 参数调用 psql 时,psql 会去除这些字节并执行命令。这可能导致在恢复操作期间执行远程命令。

已确认受影响:

pgAdmin 9.10 快照

提交:63ee81202b65e1e8923eb1b917b49312a6fb7df2(2025-11-13)

可能受到影响:

has_meta_commands()任何包含来自提交的补丁的版本1d397395f75320ca1d4ed5e9ca721c603415e836

  • 9.11+:普通恢复操作在 psql 受限模式下运行(\restrict,因此元命令现在会被 psql 本身阻止。
  • 9.10:易受过滤器绕过攻击。

细节

  • web/pgadmin/tools/restore/__init__.py
  • 功能has_meta_commands()

相关代码(来自已修复版本):

def has_meta_commands(path, chunk_size=8 * 1024 * 1024):    pattern = re.compile(br'(^|\n)[ \t]*\\')
    with open(path, "rb") as f:        prev_tail = b""        while chunk := f.read(chunk_size):            data = prev_tail + chunk
            if pattern.search(data):                return True
            prev_tail = data[-10:]
    return False

原因:

  1. SQL 文件以二进制模式打开。
  2. 该正则表达式仅将反斜杠前的空格和制表符视为可忽略项。
  3. 在反斜杠前放置 UTF-8 BOM(EF BB BF)或类似序列可以防止被检测到。
  4. pgAdmin错误地判定该文件不包含任何元命令。
  5. psql 在读取时会剥离 BOM,并正常执行元命令。

(PoC)

带有 BOM 前缀的有效载荷:

\xef\xbb\xbf\\!echo HACKED_FROM_BOM > /tmp/bom_ran SELECT 1;

控制载荷:

\\!echo SHOULD_BE_BLOCKED SELECT 1;

免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:渗透Xiao白帽 《漏洞速递 | CVE-2025-13780 pgAdmin RCE漏洞》

评论:0   参与:  0