Dedecms sp2 5.7 後臺getshell審計
阿新 • • 發佈:2020-08-06
前言
最近看了《程式碼審計-企業級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做了一個正則處理
我嘗試過 但都以失敗告終了繞不過那怎麼辦吶?重新找一個吧
總結
其實都是因為這個全域性變數註冊漏洞太變態了
快就是慢,少就是多