导语:棱镜七彩漏洞深度分析|CVE-2022-4223 Pgadmin 命令执行漏洞
项目介绍
PostgreSQL是世界上第四大流行的开源数据库管理系统,它在各种规模的应用程序中得到了广泛的使用。而管理数据库的传统方法是使用命令行界面(CLI)工具。
PostgreSQL的图形化用户界面(GUI)工具则可以帮助用户对数据库实现更好的管理、操纵、以及可视化其数据。目前star数1.1k。
项目地址
https://www.pgadmin.org/
漏洞概述
pgadmin在验证pg_dump等工具路径的时候,由于没有对用户参数进行合理校验,在windows平台下存在命令执行漏洞。
影响版本
pgadmin 6.17
漏洞复现
Poc:
1)使用impacket提供的smbserver.py脚本构造恶意的smb服务
python3 smbserver.py -comment 'My share' TMP /tmp
2)编译恶意的exe文件并放到对应目录
3)登录pgadmin,执行命令
漏洞分析
最新版本的pgadmin 6.17存在命令执行漏洞,如下,subprocess.getoutput函数接收了full_path参数,而full_path可以通过用户指定
有几个点需要注意
1)replace_binary_path
该函数从定义看仅仅替换了$DIR为当前目录,因此可以忽略影响
2)os.path几个函数的处理
从下面代码可以看出full_path在不同平台下拼接的路径也不同,如果在windows下部署,
那么后缀会出现.exe。当windows使用smbv1协议时,可以使用UNC path指定攻击者的恶意文件从而执行任意命令。
注意,windows下恶意的exe文件必须是下面几个文件名之一
修复方式
暂不使用windows版本pgadmin
如若转载,请注明原文地址