描述
EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过修改数据库表名可以实现任意代码执行(需要弄到管理员权限登录到后台)
漏洞复现
源码下载:http://www.phome.net/
下载后访问/upload/e/install/index.php进行安装
这里我已经安装过了
步骤
设置好基础配置登录后台,进行漏洞复现
打开抓包软件设置好代理准备抓包
点击确定
修改后 》 放包
点击备份数据目录》点击查看备份说明
修改后路径
查看目录文件 upload\e\admin\ebak\phome.php
72行,接收到备份数据库的参数,然后传递给Ebak_DoEbak函数。
然后传递到 upload\e\admin\ebak\class\functions.php 文件中的Ebak_DOEbak函数中。EbakDOEbak函数接受参数后,将数据库表名传递给变量$tablename。
继续看代码,可以看到遍历表名并赋值给b_table、 d_table
使用RepPostVar函数对表名进行处理,其中d_table拼 接 成 d_table拼接成tb数组时没有对键值名添加双引号。
在生成config.php文件的过程中,对d_table没有进行处理,直接拼接到生成文件的字符串中,导致任意代码执行漏洞。
参考文章:https://www.cnblogs.com/yuzly/p/11369770.html