1. 程式人生 > 實用技巧 >Dedecms sp2 5.7 後臺getshell審計

Dedecms sp2 5.7 後臺getshell審計

前言

最近看了《程式碼審計-企業級Web程式碼安全構架》第一遍,頗有心動,找了個織夢來練練手

環境

win10 mysql5.7+php5.4.45
工具 vs+seay

後臺程式碼任意檔案寫入

首先我們先還是必須得熟悉一下dede目錄結構

1、程式核心程式目錄及簡介
/include目錄 程式核心目錄
config_base.php 環境定義檔案。用於檢測系統環境,定義工作目錄,儲存資料庫連結資訊,引入常用函式等,建議不要修改。
config_hand.php 系統配置檔案。定義系統常用的配置資訊定義,可從後臺管理直接生成該檔案。
config_passport.php 通行證檔案
config_rglobals.php 檢測系統外部變數
config_rglobals_magic.php 同上
inc_archives_view.php 用於瀏覽文件或對文件生成HTML
inc_arclist_view.php 用於瀏覽頻道列表或對內容列表生成HTML
inc_arcmember_view.php 用於瀏覽會員釋出的文件
inc_arcpart_view.php 用於解析和建立全域性性質的模板,如頻道封面,主頁,單個頁面等
inc_arcsearch_view.php 用於文件搜尋
inc_arcspec_view.php 用於瀏覽所有專題列表或對專題列表生成HTML
inc_channel_unit.php 使用者解析特定頻道的附加資料結構資訊
inc_channel_unit_functions.php 系統共用函式集合
inc_downclass.php 防採集隨機字串函式
inc_freelist_view.php 用於對特定內容列表生成HTML
inc_functions.php 可供使用者使用的函式集合
inc_imgbt.php GetTypeidSelMember
inc_memberlogin.php 用於使用者登入及獲得會員狀態
inc_photograph.php 用於處理系統中的圖片,例如水印,縮圖等
inc_photowatermark_config.php 圖片處理引數定義
inc_rss_view.php 用於瀏覽頻道RSS或對RSS生成靜態檔案
inc_separate_functions.php SpGetArcList函式,用於獲得文件列表
inc_sitemap.php 用於生成網站地圖
inc_type_tree.php 用於選擇欄目的目錄樹
inc_type_tree_member.php 同上,會員使用
inc_typelink.php 用於顯示文章的位置和欄目位置等
inc_typeunit_admin.php 用於頻道管理時的一些複雜操作,主要用於後臺
inc_typeunit_menu.php 同上
inc_userlogin.php 用於管理員登入
inc_vote.php 用於管理投票
jump.php 用於超連結跳轉
pub_charset.php 共用字元處理函式,GB
/UTF-8/Unicode/BIG5等互換 pub_collection.php 用於採集 pub_collection_functions.php 採集用函式 pub_datalist.php 後臺管理用資料列表 pub_datalist_dm.php 同上,不使用模板 pub_db_mysql.php 用於操作資料庫 pub_dedehtml2.php 用於採集中的HTML解析 pub_dedehtml.php HTML解析器 pub_dedetag.php 用於dede模板標籤解析 pub_httpdown.php 用於下載http中的資源 pub_oxwindow.php 後臺程式擴充套件 pub_splitword_www.php 織夢分詞演算法 validateimg.php 驗證碼 vdimgck.php 驗證碼
/inc 共用函式目錄 inc_fun_funAdmin.php 獲取拼音碼等函式 inc_fun_funString.php html程式碼處理等函式 inc_fun_SpGetArcList.php 獲取文件列表SpGetArcList 對於菜鳥來說,對於菜鳥來說,config_base.php,這個檔案,當你的程式出現問題,需要覆蓋,當你的程式出現問題,需要覆蓋。不要覆蓋 config_base.php和config_hand.php檔案,裡面都是dede一些核心配置檔案,對於高手來說,也許修改幾個php頁面已經達不到目的了,就需要了解dede的資料庫結構,下面是部分關鍵資料表的結構和說明,不完全,還沒有整理完全,過幾天釋出完整版本

這裡我們先看index.php包含了一個common.inc.php的檔案我們跟進看一下

可以看見這裡存在變數註冊漏洞具體參考

https://xz.aliyun.com/t/2911

然後我們定位漏洞程式碼

這裡者fwrite裡面的兩個引數我們都可通過Dede的任意變數註冊來進行實現控制從而實現任意檔案寫入

後臺配置檔案刪除重灌getshell

那按照上面的變數覆蓋思路很容易就找到一處任意檔案刪除在del方法裡面

但是想法總是美好的 然而現實

我作斜槓跑哪裡去了?

簡單的除錯一下

看見到這一步的時候對filename做了一個正則處理

我嘗試過 但都以失敗告終了繞不過那怎麼辦吶?重新找一個吧

總結

其實都是因為這個全域性變數註冊漏洞太變態了

快就是慢,少就是多