天天看點

Discuz3.4漏洞詳情分析

Discuz!論壇目前最新版本為3.4版本,已經好久沒有更新了,我們SINE安全在對其網站安全檢測的同時發現一處漏洞,該漏洞可導緻論壇的背景檔案可以任意的删除,導緻網站癱瘓,背景無法登陸。關于該網站漏洞的細節我們來詳細的分析看一下:

Discuz漏洞的檢測與分析

該漏洞發生的位置在于source目錄下的admincp檔案夾裡的admincp_forums.php代碼裡,我們用note編輯器打開查找到unlink函數調用的地方,就看到漏洞産生的原因了,直接搜尋$_get{'replybgnew'],定位到代碼。漏洞的使用有限制,必須是discuz管理者的權限,是以說漏洞危害較小,但也還是一處discuz的漏洞,如下圖所示:

Discuz3.4漏洞詳情分析

從上圖我們看到代碼首先會進行判斷對于GET送出過來的參數會進行IF語句,從代碼裡獲知當$multiset的值為真或者是為假的時候,就會将參數指派為0,我們接着往下看另外一個的IF語句是如何使用的,當IF下來的時候會進行安全檢測,将parse_url參數裡的結果進行檢測,來确定前端送出過來的網址是否正确,代碼執行到最後一步我們看到attachurl的變量内容,竟然可以僞造惡意代碼插入進去。

Discuz3.4漏洞詳情分析

我們構造惡意代碼首先搭建一下測試的Discuz論壇環境,伺服器使用linux centos系統,PHP版本使用5.3版本,資料庫mysql5.5,我們從官方下載下傳一份3.4正式版的代碼,安裝到咱們的測試環境中。打開論壇,登陸背景,然後找到論壇的子產品管理,我們點選最下端的送出,然後通過抓包擷取資料,在送出的post資料中添加:

Discuz3.4漏洞詳情分析

&replybgnew=../../../index.php&delreplybg=safe這個代碼,然後再送出post,就會把網站的論壇首頁删除掉,就會顯示如下圖:

Discuz3.4漏洞詳情分析

關于這個Discuz!網站漏洞,前提是需要擷取論壇管理者的權限,相對來說危害較小,但也不能忽視對網站安全的防護,時刻做好網站的安全備份,discuz要登陸背景經常看下是否有漏洞更新檔需要修複,關于這個漏洞的修複,建議将discuz的背景位址admin.php改為admin!@#ht.php這樣即使知道管理者的賬号密碼,也登陸不了背景。