某知名系統漏洞挖掘與利用思路探索

盛邦安全發表於2022-09-19

一、引言


金萬維旗下系列產品存在資訊洩漏、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。

圖片

圖片


點選瞭解更多

相關文章