蛙啊!老母親給你整理了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
昵稱得分


TAG:漏斗社區 |