帝國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文件