標籤:

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安全招聘:

通付盾

安全服務項目經理

chamd5.org/jobdetail.as

360企業安全 瀋陽

資深滲透測試工程師

chamd5.org/jobdetail.as

weixin.qq.com/r/YTtDW3r (二維碼自動識別)


推薦閱讀:

Python3學習系列(二):編寫屬於自己的網站後台掃描器
TK 教主:中國黑客VS外國黑客,我們為何不一樣?
信息相關的角色和責任(Day013)
CSA發布《雲計算關鍵領域安全指南V4.0》
DDoSaaS!國內地下 DDoS 攻擊產業大升級揭秘 嘶吼RoarTalk

TAG:網路安全 |