項目介紹
PostgreSQL是世界上第四大流行的開源資料庫管理系統,它在各種規模的應用程式中得到了廣泛的使用。而管理資料庫的傳統方法是使用指令行界面(CLI)工具。
PostgreSQL的圖形化使用者界面(GUI)工具則可以幫助使用者對資料庫實作更好的管理、操縱、以及可視化其資料。目前star數1.1k。
項目位址
https://www.pgadmin.org/
漏洞概述
pgadmin在驗證pg_dump等工具路徑的時候,由于沒有對使用者參數進行合理校驗,在windows平台下存在指令執行漏洞。
影響版本
pgadmin 6.17
漏洞複現
Poc:
1)使用impacket提供的smbserver.py腳本構造惡意的smb服務
python3 smbserver.py -comment 'My share' TMP /tmp
2)編譯惡意的exe檔案并放到對應目錄
3)登入pgadmin,執行指令
漏洞分析
最新版本的pgadmin 6.17存在指令執行漏洞,如下,subprocess.getoutput函數接收了full_path參數,而full_path可以通過使用者指定
有幾個點需要注意
- replace_binary_path
該函數從定義看僅僅替換了$DIR為目前目錄,是以可以忽略影響
- os.path幾個函數的處理
從下面代碼可以看出full_path在不同平台下拼接的路徑也不同,如果在windows下部署,
那麼字尾會出現.exe。當windows使用smbv1協定時,可以使用UNC path指定攻擊者的惡意檔案進而執行任意指令。
注意,windows下惡意的exe檔案必須是下面幾個檔案名之一
修複方式
暫不使用windows版本pgadmin