漏洞深度分析|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为当前目录,因此可以忽略影响

 

  1. os.path几个函数的处理

从下面代码可以看出full_path在不同平台下拼接的路径也不同,如果在windows下部署,

那么后缀会出现.exe。当windows使用smbv1协议时,可以使用UNC path指定攻击者的恶意文件从而执行任意命令。

 

注意,windows下恶意的exe文件必须是下面几个文件名之一

 

修复方式

暂不使用windows版本pgadmin

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值