【漏洞复现】帝国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环境中必须开启短标签,不然安装会提示无法安装

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台任意代码执行 第1张

4、设置php.ini中 short_open_tag = On,重启phpstudy

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台任意代码执行 第2张

四、漏洞复现

1、查看代码e/admin/ebak/phome.php接收备份数据库传递的参数,然后传递给Ebak_DoEbak函数中。

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台任意代码执行 第3张

2、跟进Ebak_DoEbak函数所在的位置,可以看到将数据库表名传递给变量$tablename

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台任意代码执行 第4张

3、继续浏览代码,可以看到如下代码,遍历表名并赋值给$b_table$d_table,使用RepPostVar函数对表名进行处理,其中$d_table拼接成$tb数组时没有对键值名添加双引号。

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台任意代码执行 第5张

4、在生成config.php文件的过程中,对于$d_table没有进行处理,直接拼接到生成文件的字符串中,导致任意代码执行漏洞。

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台任意代码执行 第6张

5. 访问后台

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台任意代码执行 第7张

6. 按下图依次点击,要备份的数据表选一个就好

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台任意代码执行 第8张

7. burp抓包修改tablename

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台任意代码执行 第9张

5. 访问config.php

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台任意代码执行 第10张

【漏洞复现】帝国CMS(EmpireCMS) v7.5后台任意代码执行 第11张