1. 程式人生 > >帝國CMS(EmpireCMS) v7.5 程式碼注入分析(CVE-2018-19462)

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