天天看點

網站滲透測試服務之discuz漏洞挖掘與利用

近期我們在對discuz x3.4進行全面的網站滲透測試的時候,發現discuz多國語言版存在遠端代碼執行漏洞,該漏洞可導緻論壇被直接上傳webshell,直接遠端擷取管理者權限,linux伺服器可以直接執行系統指令,危害性較大,關于該discuz漏洞的詳情,我們來詳細的分析看下。

網站滲透測試服務之discuz漏洞挖掘與利用

discuz漏洞影響範圍:discuz x3.4 discuz x3.3 discuz x3.2,版本都受該網站漏洞的影響,漏洞産生的原因是在source目錄下function檔案夾裡function_core.php代碼裡的cookies與語言language參數值并沒有詳細的進行安全過濾與檢測,導緻可以插入惡意的代碼到資料庫,并遠端執行惡意代碼,可擷取webshell權限。

discuz漏洞分析

我們來看下剛才産生漏洞的代碼,在第535行往下看,有一段代碼是這樣寫的,預設網站系統将緩存資料存儲在data檔案夾裡的template目錄中,緩存檔案名的命名是由前面的discuz_lang參數進行控制來指令的,漏洞産生的原因就在這裡。那這個discuz_lang參數的值是從來擷取來的呢? 我們跟進分析網站代碼,可以看到是從language語言這一變量裡去擷取的值,也就是說,我們要利用這個網站漏洞,首先要去改變這個language的值,将惡意代碼插入到這個值當中去,POC代碼如下:

網站滲透測試服務之discuz漏洞挖掘與利用

post資料到論壇的forum.php頁面,将post資料改為:Z3T2_2132_language=en'.phpinfo().';即可執行php語句,整個漏洞的分析,我們可以看出discuz官方并沒有對post資料裡的cookies值進行安全過濾與判斷,導緻可以直接寫入language裡惡意代碼并遠端執行,可以構造一句話代碼,直接擷取webshell。