EmpireCMS 7.5 后台任意代码执行漏洞¶
一、漏洞简介¶
二、漏洞影响¶
EmpireCMS 7.5
三、复现过程¶
漏洞分析¶
漏洞代码发生在后台数据备份处代码/e/admin/ebak/ChangeTable.php 44行附近,通过审计发现执行备份时,对表名的处理程序是value="" 通过php短标签形式直接赋值给tablename[]。
进行备份时未对数据库表名做验证,导致任意代码执行。
漏洞复现¶
1、查看代码e/admin/ebak/phome.php接收备份数据库传递的参数,然后传递给Ebak_DoEbak函数中。
2、跟进Ebak_DoEbak函数所在的位置,可以看到将数据库表名传递给变量$tablename。
3、继续浏览代码,可以看到如下代码,遍历表名并赋值给b_table、d_table,使用RepPostVar函数对表名进行处理,其中d_table拼接成tb数组时没有对键值名添加双引号。
4、在生成config.php文件的过程中,对于$d_table没有进行处理,直接拼接到生成文件的字符串中,导致任意代码执行漏洞。
5、访问后台
6、按下图依次点击,要备份的数据表选一个就好
7、点击”开始备份”,burp抓包,修改tablename参数的值
8、可以看到响应的数据包,成功备份
9.查看备份的文件
10.访问备份目录下的config.php,可以看到成功执行phpinfo
11、这时查看config.php文件