花魁直播高品质美女在线视频互动社区 - 花魁直播官方版

 歡迎來到素材無憂網(wǎng),按 + 收藏我們
登錄 注冊 退出 找回密碼

DedeCMS最新版(20180109)任意用戶密碼修改

時間: 2018-12-09 20:40 閱讀: 作者:素材無憂網(wǎng)

2018年01月09日,Dedecms官方更新了DedeCMS V5.7 SP2正式版,后續(xù)在10日有網(wǎng)友爆出其存在任意用戶密碼重置漏洞。

攻擊難度:低。

危害程度:高。

官方修復(fù)情況如下:

目前暫未發(fā)布升級補丁

 

文章目錄

  • 什么是DedeCMS?
  • 影響的版本
  • 技術(shù)分析
  • 漏洞驗證
  • 防護方案

什么是DedeCMS?

織夢內(nèi)容管理系統(tǒng)(DeDeCMS) 以簡單、實用、開源而聞名,是國內(nèi)最知名的PHP開源網(wǎng)站管理系統(tǒng),也是使用用戶最多的PHP類CMS系統(tǒng),在經(jīng)歷多年的發(fā)展,目前的版本無論在功能,還是在易用性方面,都有了長足的發(fā)展和進步。廣泛應(yīng)用于中小型企業(yè)門戶網(wǎng)站,個人網(wǎng)站,企業(yè)和學(xué)習(xí)網(wǎng)站建設(shè),在中國,DedeCMS應(yīng)該屬于最受人們喜愛的CMS系統(tǒng)。

影響的版本

2018年01月09日之前的所有版本。

技術(shù)分析

此漏洞點出現(xiàn)在忘記密碼功能處.文件/member/resetpassword.php:

DedeCMS最新版(20180109)任意用戶密碼修改(圖1)

在找回密碼時,當(dāng)$dopost = safequestion時,通過傳入的member_id查詢出對應(yīng)id用戶的安全問題和答案信息,當(dāng)我們傳入的問題和答案不為空,而且等于之前設(shè)置的問題和答案是就進入sn()函數(shù)。

這里如果用戶設(shè)置了問題和答案,我們并不知道問題和答案是什么,就無法進入sn()函數(shù)。但是如我此用戶沒有設(shè)置問題和答案呢?此時系統(tǒng)默認問題是”0”,答案是空。

那么我們傳入答案$safeanswer = “”時:

$row[‘safeanswer’] == $safeanswer;成立。

但是傳入問題$safequestion = “0”時:

if(empty($safequestion)) $safequestion = ”,而$row[safequestion] = “0”

此時$row[safequestion] == $safequestion;不成立。

所以要讓$row[safequestion] == $safequestion;成立必須繞過if判斷,此時如果屬性PHP的話,會想到PHP的弱類型問題,所以在類型轉(zhuǎn)換的時候往往會發(fā)生意料之外的情況。

下面我們來看看如何繞過if empty的判斷:

DedeCMS最新版(20180109)任意用戶密碼修改(圖2)

可以看到使用”0.0”,”0.”,”0e1”都可以繞過前面的判斷,最后進入sn()函數(shù),繼續(xù)跟進。

sn()函數(shù)在文件/member/inc/inc_pwd_functions.php:

DedeCMS最新版(20180109)任意用戶密碼修改(圖3)
 

這里當(dāng)?shù)谝淮芜M行忘記密碼操作時,$row應(yīng)該時空,所以進入第一個if條件發(fā)送郵件insert一條記錄到dede_pwd_tmp表里;如果之前進行過忘記密碼操作,但是時間已經(jīng)超過10分鐘,那么繼續(xù)進行發(fā)送新驗證碼的操作update dede_pwd_tmp表里面的數(shù)據(jù),跟進當(dāng)前文件的newmail()函數(shù)。

DedeCMS最新版(20180109)任意用戶密碼修改(圖4)

例如這里第一次進行insert操作(update操作是一樣的)時,將8為的隨機字符串$randval加密后下乳dede_pwd_tmp表中,然后當(dāng)$send = N時(上面默認傳入N),將隨機字符串$randval拼接到url中返回,返回的url為:

http://www.attack.com/member/resetpassword.php?dopost=getpasswd&id=$mid&key=$randval

$mid就是可控的參數(shù)member_id,既然這列已經(jīng)返回了重置密碼的驗證碼key那么就可以直接重置對應(yīng)id的用戶密碼了,跟進一下重置密碼的過程。

 

首先在重置密碼時,判斷輸入的id對應(yīng)用戶是否進行過密碼重置操作,如果沒有就退出了。

DedeCMS最新版(20180109)任意用戶密碼修改(圖5)

然后判斷傳入的key的md5是否等于數(shù)據(jù)庫中的pwd內(nèi)容,如果相等就直接修改了dede_member表中對應(yīng)用戶的密碼了。

漏洞驗證

直接發(fā)送如下請求即可獲取重置密碼的鏈接:

http://localhost/DedeCMS-V5.7-UTF8-SP2/member/resetpassword.php?dopost=safequestion&safequestion=0e1&safeanwser=&id=1

DedeCMS最新版(20180109)任意用戶密碼修改(圖6)

然后獲取的重置面鏈接為:

http://localhost/DedeCMS-V5.7-UTF8-SP2/member/resetpassword.php?dopost=getpasswd&id=1&key=D2kIQomh

 

然后就可以直接重置密碼了。

這里修改id的值即可修改對應(yīng)的用戶的密碼。

但是這個漏洞存在一個缺陷,因為通過分析可以看出來只有沒有設(shè)置安全問題的用戶才會受此漏洞的影響;而且只能修改前臺用戶的密碼。

防護方案

臨時方案可以暫時關(guān)閉會員功能,等待官方發(fā)布升級補丁然后升級。

DedeCMS最新版(20180109)任意用戶密碼修改(圖7)

版權(quán)聲明: 本站資源均來自互聯(lián)網(wǎng)或會員發(fā)布,如果侵犯了您的權(quán)益請與我們聯(lián)系,我們將在24小時內(nèi)刪除!謝謝!

轉(zhuǎn)載請注明: DedeCMS最新版(20180109)任意用戶密碼修改

標(biāo)簽:  
相關(guān)文章
模板推薦