天天看點

漏洞深度分析|Pgadmin 指令執行漏洞

作者:棱鏡七彩7cai

項目介紹

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

漏洞深度分析|Pgadmin 指令執行漏洞

2)編譯惡意的exe檔案并放到對應目錄

3)登入pgadmin,執行指令

漏洞深度分析|Pgadmin 指令執行漏洞

漏洞分析

最新版本的pgadmin 6.17存在指令執行漏洞,如下,subprocess.getoutput函數接收了full_path參數,而full_path可以通過使用者指定

漏洞深度分析|Pgadmin 指令執行漏洞

有幾個點需要注意

  1. replace_binary_path

該函數從定義看僅僅替換了$DIR為目前目錄,是以可以忽略影響

漏洞深度分析|Pgadmin 指令執行漏洞
  1. os.path幾個函數的處理

從下面代碼可以看出full_path在不同平台下拼接的路徑也不同,如果在windows下部署,

那麼字尾會出現.exe。當windows使用smbv1協定時,可以使用UNC path指定攻擊者的惡意檔案進而執行任意指令。

漏洞深度分析|Pgadmin 指令執行漏洞

注意,windows下惡意的exe檔案必須是下面幾個檔案名之一

漏洞深度分析|Pgadmin 指令執行漏洞

修複方式

暫不使用windows版本pgadmin

繼續閱讀