欢迎光临
我们一直在努力

【网络安全】企业建站系统Metinfo多个高危漏洞披露及修复方案

推广者专属福利,新客户无门槛领取总价值高达2775元代金券,每种代金券限量500张,先到先得。

Metinfo 是什么?

MetInfo 企业建站系统采用PHP+Mysql架构,V1.0版本于2009年发布,目前版本是6.1.3,更新于 2018年10月16 日,又称米拓企业建站系统。MetInfo是一款对SEO非常友好、支持多语言、功能全面、安全稳定、支持多终端展示并且支持可视化编辑、使用简单的企业建站软件。

漏洞描述

近日,有安全研究人员披露Metinfo多个高危安全漏洞,包括任意文件读取,XXE,敏感信息泄露等危害严重的漏洞。
漏洞原理与危害此次漏洞共有三处:
1、任意文件读取
2、XXE漏洞
3、敏感信息泄露

1、任意文件读取漏洞存在于app/system/include/module/old_thumb.class.php文件中。下面是version=6.0.0漏洞源码:

# MetInfo Enterprise Content Management System
# Copyright (C) MetInfo Co.,Ltd (http://www.metinfo.cn). All rights reserved.

defined(‘IN_MET’) or exit(‘No permission’);

load::sys_class(‘web’);

class old_thumb extends web{

public function doshow(){
global $_M;

$dir = str_replace(‘../’, ”, $_GET[‘dir’]);

if(strstr(str_replace($_M[‘url’][‘site’], ”, $dir), ‘http’)){
header(“Content-type: image/jpeg”);
ob_start();
readfile($dir);
ob_flush();
flush();
die;
}

6.0.0简要说下,这个绕过满足两个条件,1 – dir参数中有”http”字符串,2 – 把”../”替换成”…/./”或者”….//”即可绕过。最后payload为:/member/index.php?a=doshow&m=include&c=old_thumb&dir=http/…/./…/./config/config_db.php

version=6.1.0漏洞源码

<?php
# MetInfo Enterprise Content Management System
# Copyright (C) MetInfo Co.,Ltd (http://www.metinfo.cn). All rights reserved.

defined(‘IN_MET’) or exit(‘No permission’);

load::sys_class(‘web’);

class old_thumb extends web{
public function doshow(){
global $_M;

$dir = str_replace(array(‘../’,’./’), ”, $_GET[‘dir’]);

if(substr(str_replace($_M[‘url’][‘site’], ”, $dir),0,4) == ‘http’){
header(“Content-type: image/jpeg”);
ob_start();
readfile($dir);
ob_flush();
flush();
die;
}

这是最新版本6.1.0的源码,看到”header(“Content-type: image/jpeg”);”这行代码猜测是预览图片的,通过flush缓存到浏览器。关键点在于 $dir = str_replace(array(‘../’,’./’), ”, $_GET[‘dir’]);这一步,把”../”和”./”替换为空,这里存在绕过,提交”./…/”可以得到”.”,根据这个思路可以跳过目录,最后payload为:/member/index.php?a=doshow&m=include&c=old_thumb&dir=http/./…/…/.//./…/…/.//config/config_db.php

2、XXE漏洞

漏洞文件为”app/system/pay/web/pay.class.php”,下面是源代码:

public function donotify() {
global $_M;
//=======【微信异步通知验证】==========================
$xm l = $GLOBALS[‘HTTP_RAW_POST_DATA’];
$array = json_decode(json_encode(simplexm l_load_string($xm l, ‘Simplexm lElement’, LIBxm l_NOCDATA)), true);
if($array && $array[‘out_trade_no’]) {
$date = $this->GetOeder($array[‘out_trade_no’]);
$this->doNotify_wxpay($date);

}

$out_trade_no = $_M[‘form’][‘out_trade_no’] ? : $_POST[‘orderId’];
if($_POST[‘remark1’ ])
{
$out_trade_no = trim($_POST[‘remark1’]);
}
if($out_trade_no) {
$date = $this->GetOeder($out_trade_no);
//=======【支付宝异步通知验证】==========================
if($date[‘pay_type’] === ‘3’) {
$this->doNotify_alipay($date);
}
//=======【银联异步通知验证】==========================
if($date[‘pay_type’] === ‘4’) {
$this->doNotify_unionpay($date);
}

//=======【财付通异步通知验证】==========================
if($date[‘pay_type’] === ‘2’) {
$this->doNotify_tenpay($date);
}
//=======【网银在线异步通知验证】==========================
if($date[‘pay_type’] === ‘7’) {
$this->doNotify_chinabank($date);
}
//=======【paypal支付验证】 by:rabbbbit 20171103===============
if($date[‘pay_type’] === ‘5’) {
$this->doNotify_paypal($date);
}
}
}

漏洞在”$array = json_decode(json_encode(simplexm l_load_string($xm l, ‘Simplexm lElement’, LIBxm l_NOCDATA)), true);”这行代码中,没有禁用外部实体加载,这里利用weblog测试下:

可以看到,成功访问了我的外网服务器。

3、敏感信息泄露

漏洞位于”install/phpinfo.php”文件,访问ip/install/phpinfo.php可以查看phpinfo信息,会泄露系统信息,绝对路径等敏感数据,为攻击者入侵创造有利条件。

建议:删除install/phpinfo.php文件或者官网下载最新版。

解决方案:

更新至官方最新版本6.1.3:https://www.metinfo.cn/download/
或删除漏洞文件:old_thumb.class.php,pay.class.php;

注意:任意文件读取和XXE漏洞存在于6.1.0版本,但是官网目前已经修复后版本仍为6.1.0(已经删除掉”old_thumb.class.php”,”pay.class.php”),相关用户最好确认下使用的6.1.0是否存在漏洞。6.1.3最新版本可以放心下载。

赞(0) 打赏
未经允许不得转载:IT俱乐部 | 学习俱乐部 » 【网络安全】企业建站系统Metinfo多个高危漏洞披露及修复方案
腾讯云国际顶级CA机构SSL证书8.8折,云解析买一年最高送半年!
腾讯云网站解决方案帮您轻松应对建站成本高/网络不稳等常见问题

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

免费分享阿里云&腾讯云优惠券,阿里云&腾讯云代金券领取,阿里云服务器ecs租用、阿里云服务器购买。领取本站阿里云优惠券可购买限时2折服务器,并返现20%费用。

阿里优惠直购腾讯优惠直购

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏