一、引言
金萬維旗下系列產品存在資訊洩漏、sql注入等漏洞,配合後臺應用的功能可直接獲取伺服器許可權。
說起金萬維可能有的小夥伴沒聽過,但以下介面經常做攻防演練的小夥伴應該不會陌生:
透過搜尋指紋 body="GNRemote.dll",發現公網上就存在大量案例:
本文以安全研究為目的,分享對該套系統的程式碼審計和漏洞挖掘過程,文中所提到的漏洞均已提交給CNVD&CITIVD,請勿用做非法用途。
二、環境搭建
金萬維官網上就能直接下載和搭建系統,如“天聯高階版”下載地址為:
https://www.gnway.com/prod/res.php?id=tkpro_server
ps:事實上“易速聯”、 “易聯通”、“暢捷通”、“天聯”、“天聯高階版”、“雲聯”、“遠端通”、“路路通”等都是其直屬產品或oem合作產品,均存在漏洞。
下載以後直接安裝即可,安裝目錄預設在C:\GNWay目錄下:
Web路徑為:C:\GNWay\TeamLinkPro Server\Web,安裝完成後根目錄有phpinfo.php,index.php等,但並不能解析,主要由GNRemote.dll來呼叫功能,其餘為靜態檔案。
安裝後介面如下:
三、資訊洩露
透過程式碼審計發現發現一處未鑑權介面,可獲取使用者名稱:
對應的url地址為:
/GNRemote.dll?GNFunction=GetUsers
有了使用者名稱以後可以嘗試透過弱口令登入後臺。
四、SQL隱碼攻擊
使用者名稱洩漏+弱口令當然不是最穩妥的進入後臺方法,透過程式碼審計找到一處注入點, userid直接拼接導致注入。
該介面是將使用者新增到管理員的介面,所以需要透過遍歷userid獲取使用者資訊。如果返回00代表該使用者存在,反之不存在,而注入需要獲取存在的userid,每個站userid不同,遍歷一下找到一個存在userid便可進行注入。
注入點還是挺好找的,透過注入可獲取使用者密碼。比較麻煩的是密碼解密,該密碼的加密方式並不是傳統的MD5。
PS:資訊洩漏的漏洞適用於全版本,sql注入的漏洞適用於2018以上的版本。
五、密碼解密分析
首先IDA反編譯GNRemote.dll檔案,再其中搜尋password關鍵字,發現相關的sql語句,然後找一處相對比較簡單的語句(涉及的欄位比較少,便於分析),如下圖所示:
經過交叉引用分析,發現該語句位於匯出函式ChangePassword函式中,從字面意思可以理解為修改密碼,如下圖所示:
在這個函式中,透過其中的一些字串可以看出,該函式可能是和修改使用者密碼相關,那麼分析下能否找到這個語句中的password值的來源。簡單分析後,發現多處對該值有操作,不太好定位分析,所以改為動態除錯分析。
經過分析,載入GNRemote.dll這個檔案的程式名為GNCore.exe。使用windbg附加後在ChangePassword函式下斷點,發現在web介面中的修改密碼處,可以觸發斷點,也就是修改密碼的功能確實在這個ChangePassword函式中,如下圖所示:
結合剛才定位的sql語句,使用動態除錯,反覆檢視password的值的來源,最終在地址100758C2出發現對輸入的原始密碼進行操作,最後將結果格式化到sql語句中,完成密碼修改功能,如下圖所示:
那麼在該地址處的函式即為加密操作的關鍵函式,應該著重分析。在這個函式內部,可以看到對原始密碼的長度進行判斷,如果不是8的倍數,則在原始密碼後面追加空格字元,一直填充到滿足8的倍數為止,如下圖所示:
然後將原始密碼進行一系列的異或操作,如下圖所示:
分析發現,異或的KEY來著上一函式100D6220,在該函式內部,發現複製兩處固定值資料,如下圖所示:
檢視其數值,發現這正式是Blowfish演算法使用的p_box和s_box資料,如下所示:
那麼該演算法的KEY是什麼?分析後發現KEY來自上一層函式10154BC0,可以看到這裡有兩個KEY,分別是地址101D0480和101D0440,這裡使用的是101D0480的KEY,如下圖所示:
到目前為止,分析清楚了對原始密碼加密的演算法是Blowfish,並且找到了KEY。因為這是對稱加密演算法,所以可以完成對加密後的密碼進行解密,還原出原始密碼,完成對分析結果正確性的驗證,如下圖:
六、後臺getshell
登入後臺後可以看到服務端配置的應用程式,一般分為以下幾種。
6.1 遠端桌面
服務端在安裝完畢後會對映一個遠端桌面埠,預設為55366,對使用者配置了遠端桌面可以直接透過客戶端進行連線。(在易速聯服務端新建使用者後系統也會建立GNWay字首的系統使用者)
透過客戶端連線到系統桌面。
6.2 服務端
配置服務端應用可以透過該使用者配置遠端登入,直接連線伺服器。
釋出桌面後該使用者應用中便會新增遠端登入的應用,新增完成後即可遠端連線。
6.3 第三方程式
如用友u8等程式,一般情況都可以透過弱口令進入應用,或者本身就已經勾選了記住密碼了的。利用思路也比較簡單,在與系統有互動的地方shift+右鍵即可調出cmd。
點選瞭解更多