【漏洞预警】Metinfo新版本6.1.0存在多个漏洞

liudao  2104天前

图片.png


【漏洞预警】Metinfo新版本6.1.0存在多个漏洞

最近Metinfo v6.1.0曝出任意文件读取,XXE,敏感信息泄露三个危害比较严重的漏洞。任意文件读取可以读取服务器上敏感文件,比如数据库配置文件。XXE又称为xm l外部实体注入,可以探测内网,读取文件,执行命令等。敏感信息泄露会泄露服务器相关配置和应用的绝对路径。其上述漏洞在最新版本已经修复,可在官网下载最新版,链接见底部。

长沙米拓信息技术有限公司成立于 2009 年 3 月,是一家专注于「为中小企业提供信息化服务」的互联网企业。用户大部分位于中国。其中浙江数量4489(可能是阿里云),香港3296,北京1879,广东526,河南466

目前FOFA看到的Metinfo全球分布情况如下(非漏洞影响范围):

图片.png

目前FOFA看到的Metinfo全国分布情况如下(非漏洞影响范围):

图片.png

漏洞原理与危害此次漏洞共有三处:

1、任意文件读取

2、XXE漏洞

3、敏感信息泄露

任意文件读取

漏洞存在于app/system/include/module/old_thumb.class.php文件中。下面是部分源码:

version=6.0.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('../', '', $_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

自己搭环境测试结果:

图片.png

建议:这里官方已经修复,在官网上面最新版6.1.0的源码已经删除掉"old_thumb.class.php"文件了,可以放心下载。

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测试下:

图片.png图片.png

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

建议:这里官方已经修复,在官网上面最新版6.1.0的源码已经删除掉"pay.class.php"文件了,可以放心下载。

敏感信息泄露

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

图片.png

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


任意文件读取和XXE漏洞存在于6.1.0版本,但是官网目前已经修复后版本仍为6.1.0,相关用户最好确认下使用的6.1.0是否存在漏洞。

漏洞POC

目前,文中提到的漏洞相关PoC,FOFA客户端目前以支持检测上述漏洞。


任意文件读取漏洞POC

图片.png

XXE漏洞POC

图片.png

信息泄露漏洞POC

图片.png

CVE编号

修复建议

在官网上面最新版6.1.0的源码已经修复上述漏洞,可以到官网https://www.metinfo.cn放心下载。

更多安全文章可以关注链接:https://nosec.org

参考

[1] http://www.cnvd.org.cn

最新评论

昵称
邮箱
提交评论