當前位置:
首頁 > 最新 > 蛙啊!老母親給你整理了DEDECMS漏洞集合,快回家!

蛙啊!老母親給你整理了DEDECMS漏洞集合,快回家!

最近dedeCMS爆了好多洞(0day),於是將最近的漏洞進行復現和整理便成為了本篇漏洞集合。期待師傅們的指導與交流。

cookie偽造導致任意前台用戶登錄

0x00相關環境

0x01漏洞分析

在文件DedeCMS-V5.7-UTF8-SP2uploadsmemberindex.php中的第125-166行中的代碼塊,用於更新最近訪客記錄及站點統計記錄的代碼,當滿足$vtime - $last_vtime > 3600 !preg_match("#,".$uid.",#i", ",".$last_vid.",")的時候且$last_vid的值為空的時候,會令$last_vid = $uid,然後在第164行中使用PutCookie("last_vid", $last_vid, 3600*24, "/");將cookie下發的客戶端。

0x02漏洞復現

情況一:

由於mid在資料庫中是int,所以要進行cookie的偽造需要註冊用戶名為要越權的用戶mid數值,而admin默認為1。因此可以直接登錄為admin。

需要註冊用戶名為對應資料庫中dede_member表中mid對應的值。如註冊用戶名為0001對應dede_member表中mid為1,便是admin的mid。

然後訪問如下請求獲取偽造的cookie,

http://127.0.0.1/member/index.php?uid=0001

接下來使用0001賬號登錄,登錄後的未修改的cookie。

將last_vid的值賦給DedeUserID,last_vid__ckMd5的值賦給DedeUserID__ckMd5修改後的cookie。

修改後刷新頁面登錄到admin用戶中。

在DedeCMS-V5.7-UTF8-SP2uploadsmemberindex.php文件中的第124行,當uid不為空的時候會require_once(DEDEMEMBER."/inc/config_space.php")

跟入config_space.php在DedeCMS-V5.7-UTF8-SP2uploadsmemberincconfig_space.php文件中第29行使用了GetUserSpaceInfos方法。

跟入GetUserSpaceInfos方法在DedeCMS-V5.7-UTF8-SP2uploadsmemberincconfig_space.php文件中第118行發現該方法,且在第131行中使用了like的方式獲取用戶數據。

因此可以註冊類似於xxx1xx的用戶,如bala1bala(當然僅需要實際環境中有包含用戶名有包含1的即可),然後在uid位置使用%1%讓GetUserSpaceInfos方法可以正常獲取數據,從而使代碼能夠進入PutCookie方法,從而生成偽造的cookie。

然後對cookie進行替換,DedeUserID=%1%; DedeUserID__ckMd5=8983265c65c8d1ca;中會滿足GetNum(GetCookie("DedeUserID"));後並轉成int型1 ,再進行SQL拼接,因此便可以登錄到admin。

任意修改前台用戶密碼

0x00相關環境

源碼信息:DedeCMS-V5.7-UTF8-SP2-20180109

0x01漏洞分析

在DedeCMS-V5.7-UTF8-SP2uploadsmember
esetpassword.php文件中的第96-95行,其中$row["safequestion"] == $safequestion && $row["safeanswer"] == $safeanswer代碼是問題的關鍵,默認$row["safequestion"]在數據中的內容為0,$row["safeanswer"]在資料庫中的結果為空,且變數$safeanswer與$safequestion是用戶可控制的變數,又使用了==進行判斷, 因此該判斷規則存在弱類型問題。

而在if(empty($safequestion)) $safequestion = "";語句中,要使empty($safequestion)為false且$row["safequestion"] == $safequestion未true,所以可以使用字元型的0.0,進行繞過。

繞過後會進入sn的方法,因此跟入sn方法,在DedeCMS-V5.7-UTF8-SP2uploadsmemberincinc_pwd_functions.php文件中第150-172行發現代碼塊,且該方法會調用newmail方法。

跟入newmail方法,在DedeCMS-V5.7-UTF8-SP2uploadsmemberincinc_pwd_functions.php文件中第73-123行中發現代碼塊,然後當傳入的$send為N的時候便會下發重置密碼的鏈接,進行密碼修改操作。

0x02漏洞復現

先進行如下請求獲取key

http://127.0.0.1/member/resetpassword.php?dopost=safequestion&safequestion=0.0&safeanswer=&id=1

然後點擊跳轉鏈接便可以重置密碼

http://127.0.0.1/member/resetpassword.php?dopost=getpasswd&id=1&key=UXqCX4lO

任意重置後台用戶密碼

0x00相關環境

0x01漏洞分析

在DedeCMS-V5.7-UTF8-SP2uploadsmemberedit_baseinfo.php文件中的第118-123行中,當使用admin用戶登錄前台進行密碼修改的時候會順帶將admin的後台密碼也進行修改了。

0x02漏洞復現

先利用前台用戶任意密碼重置漏洞重置admin的前台密碼,然後使用cookie偽造漏洞使用admin用戶登錄到前台在如下頁面中進行密碼重置,舊密碼便是利用前台用戶任意密碼重置漏洞重置admin的前台密碼(admin123),新密碼自行設置(123456),設置好提交,操作步驟如下:

先利用前台任意密碼重置,將admin的密碼重置為admin123,然後訪問該http://127.0.0.1/member/edit_baseinfo.php鏈接進行密碼修改,填入舊密碼(admin123),新密碼(123456)與郵箱提交。

修改後訪問後台可以直接使用修改後的密碼123456登錄。

前台任意文件刪除

0x00相關環境

0x01漏洞分析

問題在DedeCMS-V5.7-UTF8-SP2uploadsmemberalbum_add.php文件的第88-103行中的代碼,其中第88行中包含了/inc/archives_check.php文件對$litpic變數進行初始化,如下是/inc/archives_check.php文件對$litpic變數進行初始化的代碼塊。

然後在DedeCMS-V5.7-UTF8-SP2uploadsmemberalbum_add.php文件的第100行中使用$litpic = $litpicname;再次對$litpic變數進行賦值,而$litpicname之前未被初始化,所以可以使用變數覆蓋的方式進行賦值,在文件的第94行中要求$formhtml==1為1才能進入$litpic = $litpicname,但是$formhtml在為空的時候會被賦值,所以可以通過變數覆蓋為其賦值,使變數不為空,然後就可以進入$litpic = $litpicname。

在DedeCMS-V5.7-UTF8-SP2uploadsmemberarchives_do.php文件的第161-162行中,當$row["issystem"]!=-1的時候使用DelArc方法刪除文檔,$row["issystem"]== -1的時候使用DelArcSg刪除文檔。

而默認情況下issystem的值為1,因此可以直接跟入DelArc方法,在DedeCMS-V5.7-UTF8-SP2uploadsmemberincinc_batchup.php文件中的第20-129行中發現該代碼塊,其中第72-76行中,從資料庫中取出litpic列的值然後進行$litpic = DEDEROOT.$licp["litpic"];路徑拼接,僅做了文件是否存在的判斷,並未判斷文件類型,就進行刪除操作了,因此存在任意文件刪除漏洞。

0x02漏洞復現

先在會員中心->內容中心->系統模型內容->圖集構造如下請求,添加formhtml參數的值為1,litpicname參數的值為要刪除的文件路徑,以網站根目錄為基本目錄,構造好後進行請求。

在會員中心->內容中心->系統模型內容->圖集中找到剛才發布的文章進行刪除操作,執行結束後便會刪除,前面定義好的litpicname的文件。

後台任意文件上傳

0x00相關環境

0x01漏洞分析

在文件DedeCMS-V5.7-UTF8-SP2uploadsincludedialogselect_images_post.php的第33行-40行中,其中34行將文件名中正則匹配到的內容替換為空白,且在36行檢索文件名字中是否存在白名單中的文件格式,這兩種做法均不是取文件的後綴名來進行判斷的,所以存在被繞過的問題。

而在文件DedeCMS-V5.7-UTF8-SP2uploadsincludedialogselect_images_post.php的第55行-62行中,取文件的後綴名進行拼接和上傳操作。存在檢測方式與上傳文件生成方式不一致的問題,導致被繞過。

0x02漏洞復現

該漏洞需要開啟會員功能,然後可以在會員中心的編輯器中繞過上傳限制。

上周答案:ABCD

昵稱得分

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 漏斗社區 的精彩文章:

2018,我要Axublog

TAG:漏斗社區 |