前言
最近看了《代碼審計-企業級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做了一個正則處理

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

參考
https://www.ay46.com/jiaocheng/gaoji/730.html
總結
其實都是因為這個全局變量注冊漏洞太變態了
快就是慢,少就是多
