DedeCMS的兩個小trick
【
ChaMd5安全團隊所有文章均來源實戰,為保證廠商安全信息,文章內容以思路為主。
需要轉載,請先聯繫ChaMd5安全團隊授權。
未經授權請勿轉載。
】
0x00 前言
昨天晚上做了一個神奇的夢,夢到了我高中時候晚自習在偷偷的看《黑客攻防技術寶典》,當年的事情無論是苦是樂,回憶起來總是感覺非常的美好。但是,現實就是現實,夢境還是要被舍友的鬧鈴聲打破,在大夢初醒後,我彷彿有一種「垂死夢中驚坐起」的感覺,是誰為我織出了這麼美好的一個夢境?難道織夢CMS(DedeCMS)又要出0day了?於是,我立馬從床上跳了下來,打開電腦,從官網下載了最新版的織夢CMS(DedeCMS V5.7 SP2正式版),心想著一定要代碼審計一波帶走。於是乎,就有了你現在正在閱讀的這篇文章。
0x01 伺服器任意(圖片)文件刪除漏洞
漏洞產生在文件:memberedit_face.php
第39行的unlink() 函數引起了我的注意
函數的參數是 $cfg_basedir和$oldface
先看了一下變數 $cfg_basedir
cfg開頭的變數在DedeCMS中都是一些配置參數(cfg是config縮寫),一般無法控制。
看上圖,$cfg_basedir是寫死在配置文件中的
再看 $oldface
我全局搜索了一下,發現 $oldface 在當前文件中並沒有定義,那我是否可以通過變數覆蓋的方式來控制這個變數?
跟進到第九行,包含了config.php
繼續跟進,在 config.php第76行包含了/include/common.inc.php
在 /include/common.inc.php中把 $_GET $_POST $_COOKIE 中的變數解析了出來。
那麼 $oldface就可以用變數覆蓋的方式進行賦值。
既然 $oldface 可控,那我就要研究一下有沒對這個變數進行嚴格的過濾。
在 memberedit_face.php 第37行,限制了文件結尾後綴名是jpg、gif、png ,這是此漏洞最大的一個限制,似乎沒法繞過。
在 memberedit_face.php 第25行,限制了這個變數必須以 $userdir 的值開頭,$userdir 即為儲存當前用戶上傳頭像的文件夾,
$userdir = 『uploadsuserup』+ 當前用戶的userid
但是這裡並沒有過濾點號,因此可以路徑回溯繞過!
漏洞復現如下:
打開頁面memberedit_face.php
在上傳文件後抓包:
如圖,我在上傳圖片的請求包中增加一個oldface參數,指向伺服器根目錄的一個圖片文件,發包後就能成功刪除。
0x02 DedeCMS後台登錄處一個小trick
首先找到後台登錄驗證身份處,在 /dede/login.php 第74行,調用了userLogin的checkUser方法,這個方法用來驗證管理員憑證。
跟進去,到了 /dede/include/userlogin.class.php 第240行
在第248行的SQL語句中發現用戶名是用 like 進行模糊查詢。
而且,在245行的正則表達式中發現用戶名中可以包含下劃線( _ )
在取出用戶名後再比較密碼,若用戶名與密碼匹配則登錄成功。
這裡存在的一個問題是用戶名處用 like 進行模糊查詢,而且沒有過濾下劃線,下劃線在 like 中可以用來匹配單個字元,因此,即使我不知道管理員用戶名,也可以登錄後台。
漏洞復現如下:
若管理員是 admin 則我在後台輸入 _____ 即可登錄後台(五個下滑線,與管理員用戶名位元組數相同)
以下是ChaMd5安全招聘:
通付盾
安全服務項目經理
http://www.chamd5.org/jobdetail.aspx?id=424
360企業安全 瀋陽
資深滲透測試工程師
http://www.chamd5.org/jobdetail.aspx?id=423
http://weixin.qq.com/r/YTtDW3rE4yecrT44925z (二維碼自動識別)
推薦閱讀:
※Python3學習系列(二):編寫屬於自己的網站後台掃描器
※TK 教主:中國黑客VS外國黑客,我們為何不一樣?
※信息相關的角色和責任(Day013)
※CSA發布《雲計算關鍵領域安全指南V4.0》
※DDoSaaS!國內地下 DDoS 攻擊產業大升級揭秘 嘶吼RoarTalk
TAG:網路安全 |