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

語言: CN / TW / HK

一、引言

金萬維旗下系列產品存在信息泄漏、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。

如若轉載,請註明原文地址