近期咱們SINE安全在對discuz x3.4進行全面的網站滲透測試的時候,發現discuz多國語言版存在遠程代碼執行漏洞,該漏洞可致使論壇被直接上傳webshell,直接遠程獲取管理員權限,linux服務器能夠直接執行系統命令,危害性較大,關於該discuz漏洞的詳情,咱們來詳細的分析看下。php
discuz漏洞影響範圍:discuz x3.4 discuz x3.3 discuz x3.2,版本都受該網站漏洞的影響,漏洞產生的緣由是在source目錄下function文件夾裏function_core.php代碼裏的cookies與語言language參數值並無詳細的進行安全過濾與檢測,致使能夠插入惡意的代碼到數據庫,並遠程執行惡意代碼,可獲取webshell權限。linux
discuz漏洞分析web
咱們來看下剛纔產生漏洞的代碼,在第535行往下看,有一段代碼是這樣寫的,默認網站系統將緩存數據存儲在data文件夾裏的template目錄中,緩存文件名的命名是由前面的discuz_lang參數進行控制來命令的,漏洞產生的緣由就在這裏。那這個discuz_lang參數的值是歷來獲取來的呢? 咱們跟進分析網站代碼,能夠看到是從language語言這一變量裏去獲取的值,也就是說,咱們要利用這個網站漏洞,首先要去改變這個language的值,將惡意代碼插入到這個值當中去,POC代碼以下:shell
post數據到論壇的forum.php頁面,將post數據改成:Z3T2_2132_language=en'.phpinfo().';便可執行php語句,整個漏洞的分析,咱們能夠看出discuz官方並無對post數據裏的cookies值進行安全過濾與判斷,致使能夠直接寫入language裏惡意代碼並遠程執行,能夠構造一句話代碼,直接獲取webshell。數據庫
網站漏洞修復與安全防禦方案緩存
對discuz的版本進行全面的升級,在language參數值中進行全面的安全過濾,限制逗號,以及閉合語句的執行,還有\斜槓都一些特殊惡意代碼進行攔截,必要的話對其進行轉義,若是對代碼不是太熟悉的話,也能夠找專業的網站安全公司來進行漏洞修復,國內也就SINE安全公司,綠盟,啓明星辰比較專業。再一個對discuz目錄的權限進行安全分配,限制data目錄的腳本執行權限,防止PHP腳本的運行,最重要的就是作好網站的安全防禦。安全