帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab

帝国cms简介:

《帝国网站管理系统》英文译为”Empire CMS”,简称”Ecms”,它是基于B/S结构,且功能强大,帝国CMS-logo易用的网站管理系统。系统由帝国开发工作组独立开发,是一个经过完善设计的适用于Linux/windows/Unix等环境下高效的网站解决方案。

这次我们将给出此系统中的两个漏洞,对漏洞原理进行分析,并将漏洞复现。

一、后台数据库备份处存在代码执行漏洞

1、漏洞简介:

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

2、漏洞影响版本:

Empire CMS <= V7.5

3、环境搭建

(1)本次实验的漏洞环境为Empire CMSV7.5版本,在网上直接下载帝国cmsV7.5版本即可。将下载的帝国cms文件的upload目录直接粘贴到phpstudy的www目录下

(2)然后启动phpstudy,访问路径http://192.168.163.139/upload/e/install/index.php,进行安装帝国cms。

图片[1]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科

PS:出现了以下字样:

您的PHP配置文件php.ini配置有问题,请按下面操作即可解决:1‘ 修改php.ini,将:short_open_tag 设为 On2’ 修改后重启apache/iis方能生效。(3)根据提示修改D:\phpStudy\php\php-5.4.45\php.ini文件中(修改当前使用的PHP版本的目录)的short_open_tag = Off修改为short_open_tag = On,并且重启服务,即可实现正常访问。图片[2]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(4)直接点击下一步即可
图片[3]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(5)输入数据库的账户和密码与数据库进行连接操作,创建表格
图片[4]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(6)此处需要配置后台登陆的管理员的用户名以及密码和登陆验证码等信息图片[5]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(7)点击“进入后台控制面板”到后台登陆界面

http://192.168.163.139/upload/e/admin/index.php

图片[6]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科图片[7]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科4、漏洞复现

(1)输入刚刚注册的账户密码登陆到后台界面:

图片[8]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(2)进入到后台以后点击系统—备份数据—拉到最下面进行数据备份

图片[9]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(3)抓取数据包,写入phpinfo()语句,结果显示正在进行备份。

图片[10]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(4)直接回显命令执行语句

图片[11]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(5)点击系统—管理备份目录—查看备份说明—跳转到链接:http://192.168.163.139/upload/e/admin/ebak/bdata/empirecms_20201027182301jh9T6d/readme.txt

图片[12]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科http://192.168.163.139/upload/e/admin/ebak/bdata/empirecms_20201027182301jh9T6d/readme.txt

图片[13]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(6)将http://192.168.163.139/upload/e/admin/ebak/bdata/empirecms_20201027182301jh9T6d/readme.txt修改为http://192.168.163.139/upload/e/admin/ebak/bdata/empirecms_20201027182301jh9T6d/config.php即可实现执行语句。

图片[14]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(7)查看config文件的内容

图片[15]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科备注:使用phpinfo()语句即可实现语句执行,但是使用<?php @eval($_REQUEST[‘cmd’]);?>和大马时会自动跳转到http://192.168.163.139/upload/e/admin/ebak/phome.php并且D:\phpStudy\WWW\upload\e\admin\ebak\bdata会产生对应的文件夹,但是文件夹下面不会产生config.php文件内容,以及数据库备份内容。

5、漏洞原理分析

(1)系统在e/admin/ebak/phome.php文件中接受备份数据库传递的参数。

图片[16]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(2)接受参数后,传递到\upload\e\admin\ebak\class\functions.php文件中的Ebak_DOEbak函数中。Ebak_DOEbak函数接受参数后,将数据库表名传递给变量$tablename。

图片[17]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(3)系统对表名遍历将其赋值给b_table和b_table。在d_table处将表名拼接为字符串。对拼接而成tb数组未对其中的键值名添加双引号。

图片[18]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科(4)在生成config.php文件的过程中,对于$d_table没有进行处理,直接拼接到生成文件的字符串中,导致任意代码执行漏洞。

图片[19]-帝国cms远程代码执行漏洞-1 – 作者:龙渊实验室LongYuanLab-安全小百科关于”Ecms“的后台导入系统模型处存在的代码执行漏洞,我们将在下篇文章中进行介绍。

原文链接

来源:freebuf.com 2020-10-30 14:55:45 by: 龙渊实验室LongYuanLab

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论