帝国CMS7.5漏洞复现

漏洞描述

EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过修改数据库表名可以实现任意代码执行。

这个也是比较鸡肋,还是需要弄到管理员权限,登陆到后台。

漏洞复现

源码下载地址:http://www.phome.net/download

然后安装,安装可参考源码提供的 html 文件

帝国CMS7.5漏洞复现_第1张图片
测试执行到第三步即可

设置好各个参数后登陆后台,准备复现漏洞,按照下列顺序执行

第五步需要先开启抓包代理,使用 Burp 抓包,再点击开始备份

帝国CMS7.5漏洞复现_第2张图片帝国CMS7.5漏洞复现_第3张图片帝国CMS7.5漏洞复现_第4张图片帝国CMS7.5漏洞复现_第5张图片
然后把 参数tablename 的值改为 phpifno()

帝国CMS7.5漏洞复现_第6张图片
点击 Forward 完成备份

帝国CMS7.5漏洞复现_第7张图片帝国CMS7.5漏洞复现_第8张图片
关闭抓包,php的版本参数直接就出来了

帝国CMS7.5漏洞复现_第9张图片
也可以执行如下操作访问

帝国CMS7.5漏洞复现_第10张图片
再将地址栏的 redame.txt 改为config.php

帝国CMS7.5漏洞复现_第11张图片
帝国CMS7.5漏洞复现_第12张图片
查看目录文件 upload\e\admin\ebak\phome.php ,备份数据库的参数

第72行,接收备份数据库传递的参数,然后传递给Ebak_DoEbak函数中。

帝国CMS7.5漏洞复现_第13张图片
然后传递到 upload\e\admin\ebak\class\functions.php 文件中的EbakDOEbak函数中。EbakDOEbak函数接受参数后,将数据库表名传递给变量$tablename。

帝国CMS7.5漏洞复现_第14张图片
继续浏览代码,可以看到,遍历表名并赋值给 b t a b l e 、 b_table、 btabled_table,使用RepPostVar函数对表名进行处理,其中 d t a b l e 拼 接 成 d_table拼接成 dtabletb数组时没有对键值名添加双引号。

帝国CMS7.5漏洞复现_第15张图片
在生成config.php文件的过程中,对于$d_table没有进行处理,直接拼接到生成文件的字符串中,导致任意代码执行漏洞。

帝国CMS7.5漏洞复现_第16张图片
参考:https://www.cnblogs.com/yuzly/p/11369770.html

你可能感兴趣的:(CMS漏洞复现)