Discuz!論壇目前最新版本爲3.4版本,已經很久沒有更新了,咱們SINE安全在對其網站安全檢測的同時發現一處漏洞,該漏洞可致使論壇的後臺文件能夠任意的刪除,致使網站癱瘓,後臺沒法登錄。關於該網站漏洞的細節咱們來詳細的分析看一下:php
Discuz漏洞的檢測與分析前端
該漏洞發生的位置在於source目錄下的admincp文件夾裏的admincp_forums.php代碼裏,咱們用note編輯器打開查找到unlink函數調用的地方,就看到漏洞產生的緣由了,直接搜索$_get{'replybgnew'],定位到代碼。漏洞的使用有限制,必須是discuz管理員的權限,因此說漏洞危害較小,但也仍是一處discuz的漏洞,以下圖所示:mysql
從上圖咱們看到代碼首先會進行判斷對於GET提交過來的參數會進行IF語句,從代碼裏獲知當$multiset的值爲真或者是爲假的時候,就會將參數賦值爲0,咱們接着往下看另一個的IF語句是如何使用的,當IF下來的時候會進行安全檢測,將parse_url參數裏的結果進行檢測,來肯定前端提交過來的網址是否正確,代碼執行到最後一步咱們看到attachurl的變量內容,居然能夠僞造惡意代碼插入進去。linux
咱們構造惡意代碼首先搭建一下測試的Discuz論壇環境,服務器使用linux centos系統,PHP版本使用5.3版本,數據庫mysql5.5,咱們從官方下載一份3.4正式版的代碼,安裝到我們的測試環境中。打開論壇,登錄後臺,而後找到論壇的模塊管理,咱們點擊最下端的提交,而後經過抓包獲取數據,在提交的post數據中添加:sql
&replybgnew=../../../index.php&delreplybg=safe這個代碼,而後再提交post,就會把網站的論壇首頁刪除掉,就會顯示以下圖:數據庫
關於這個Discuz!網站漏洞,前提是須要獲取論壇管理員的權限,相對來講危害較小,但也不能忽視對網站安全的防禦,時刻作好網站的安全備份,discuz要登錄後臺常常看下是否有漏洞補丁須要修復,關於這個漏洞的修復,建議將discuz的後臺地址admin.php改成admin!@#ht.php這樣即便知道管理員的帳號密碼,也登錄不了後臺。centos