?

Jun 06 2018

DedeCMS的兩個小trick

首頁 » 代碼審計 » DedeCMS的兩個小trick   

0x00 前言

昨天晚上做了一個神奇的夢,夢到了我高中時候晚自習在偷偷的看《黑客攻防技術寶典》,當年的事情無論是苦是樂,回憶起來總是感覺非常的美好。但是,現實就是現實,夢境還是要被舍友的鬧鈴聲打破,在大夢初醒后,我仿佛有一種“垂死夢中驚坐起”的感覺,是誰為我織出了這么美好的一個夢境?難道織夢CMS(DedeCMS)又要出0day了?于是,我立馬從床上跳了下來,打開電腦,從官網下載了最新版的織夢CMS(DedeCMS V5.7 SP2正式版),心想著一定要代碼審計一波帶走。于是乎,就有了你現在正在閱讀的這篇文章。


0x01 服務器任意(圖片)文件刪除漏洞

漏洞產生在文件:\member\edit_face.php


1.jpg


第39行的unlink() 函數引起了我的注意

函數的參數是 $cfg_basedir和$oldface

先看了一下變量 $cfg_basedir

cfg開頭的變量在DedeCMS中都是一些配置參數(cfg是config縮寫),一般無法控制。

2.png




看上圖,$cfg_basedir是寫死在配置文件中的

再看 $oldface

我全局搜索了一下,發現 $oldface 在當前文件中并沒有定義,那我是否可以通過變量覆蓋的方式來控制這個變量?

跟進到第九行,包含了config.php


1.jpg


繼續跟進,在 config.php第76行包含了/include/common.inc.php

4.jpg


在 /include/common.inc.php中把 $_GET $_POST $_COOKIE 中的變量解析了出來。


6.jpg

那么 $oldface就可以用變量覆蓋的方式進行賦值。

既然 $oldface 可控,那我就要研究一下有沒對這個變量進行嚴格的過濾。

7.png


在 \member\edit_face.php 第37行,限制了文件結尾后綴名是jpg、gif、png ,這是此漏洞最大的一個限制,似乎沒法繞過

8.png

在 \member\edit_face.php 第25行,限制了這個變量必須以 $userdir 的值開頭,$userdir 即為儲存當前用戶上傳頭像的文件夾,

$userdir = ‘\uploads\userup\’+ 當前用戶的userid

但是這里并沒有過濾點號,因此可以路徑回溯繞過

 

漏洞復現如下:

打開頁面\member\edit_face.php

7.jpg


在上傳文件后抓包:

8..jpg


如圖,我在上傳圖片的請求包中增加一個oldface參數,指向服務器根目錄的一個圖片文件,發包后就能成功刪除。


0x02 DedeCMS后臺登錄處一個小trick

首先找到后臺登錄驗證身份處,在 /dede/login.php 第74行,調用了userLogin的checkUser方法,這個方法用來驗證管理員憑證。

9.jpg


跟進去,到了 /dede/include/userlogin.class.php 第240行

10.jpg


在第248行的SQL語句中發現用戶名是用 like 進行模糊查詢。

而且,在245行的正則表達式中發現用戶名中可以包含下劃線( _ )

11.jpg


在取出用戶名后再比較密碼,若用戶名與密碼匹配則登錄成功。 

這里存在的一個問題是用戶名處用 like 進行模糊查詢,而且沒有過濾下劃線,下劃線在 like 中可以用來匹配單個字符,因此,即使我不知道管理員用戶名,也可以登錄后臺。

 

漏洞復現如下:

若管理員是 admin 則我在后臺輸入 _____ 即可登錄后臺(五個下滑線,與管理員用戶名字節數相同)


1.jpg




如果您喜歡本博客,歡迎點擊圖片定訂閱到郵箱填寫您的郵件地址,訂閱我們的精彩內容:

正文部分到此結束

文章標簽: dedecms漏洞

版權聲明:若無特殊注明,本文皆為( mOon )原創,轉載請保留文章出處。

也許喜歡: «Dedecms V5.7 后臺文件重命名[CVE-2018-9134] | ThinkPHP5.0.x框架SQL注入»

你腫么看?

你還可以輸入 250/250 個字

? 微笑 大笑 拽 大哭 親親 流汗 噴血 奸笑 囧 不爽 暈 示愛 害羞 吃驚 驚嘆 愛你 嚇死了 呵呵

評論信息框

這篇文章還沒有收到評論,趕緊來搶沙發吧~

?
?
河北11选5开奖