帝國CMS(EmpireCMS) v7.5后台任意代碼執行
一、漏洞描述
EmpireCMS 7.5版本及之前版本在后台備份數據庫時,未對數據庫表名做驗證,通過修改數據庫表名可以實現任意代碼執行。
二、影響版本
EmpireCMS<=7.5
三、環境搭建
1、官方下載EmpireCMS V7.5 下載地址:http://www.phome.net/download/
2、把下載的文件中的upload下的所有目錄和文件放入到網站根目錄下
3、修改php.ini配置文件, PHP環境中必須開啟短標簽,不然安裝會提示無法安裝

4、設置php.ini中 short_open_tag = On,重啟phpstudy

5、然后開始安裝,安裝過程參考: https://jingyan.baidu.com/article/48b37f8dcc014b1a6564887c.html
四、漏洞復現
1、查看代碼e/admin/ebak/phome.php接收備份數據庫傳遞的參數,然后傳遞給Ebak_DoEbak函數中。

2、跟進Ebak_DoEbak函數所在的位置,可以看到將數據庫表名傳遞給變量$tablename。

3、繼續瀏覽代碼,可以看到如下代碼,遍歷表名並賦值給$b_table、$d_table,使用RepPostVar函數對表名進行處理,其中$d_table拼接成$tb數組時沒有對鍵值名添加雙引號。

4、在生成config.php文件的過程中,對於$d_table沒有進行處理,直接拼接到生成文件的字符串中,導致任意代碼執行漏洞。

5、訪問后台

6、按下圖依次點擊,要備份的數據表選一個就好

7、點擊”開始備份”,burp抓包,修改tablename參數的值

8、可以看到響應的數據包,成功備份

9.查看備份的文件

10.訪問備份目錄下的config.php,可以看到成功執行phpinfo

11、這時查看config.php文件

