在Kali Linux机器上使用Wazuh(开源SIEM/XDR)进行的个人实践练习中,漏洞检测模块识别出WeasyPrint包中存在一个**高(CVSS 7.5)**严重性漏洞:SSRF保护绕过(CVE-2025-68616)。我调查了该发现,通过本地概念验证复现了问题,应用了项目的修补版本,并验证了漏洞利用不再有效。本仓库记录了完整流程:检测、分析、PoC和修复。
Wazuh是一个开源安全平台(SIEM + XDR),它结合了日志收集、文件完整性监控(FIM)、异常检测以及已监控主机上安装软件的漏洞检测,并将软件清单与CVE数据库(NVD等)进行交叉关联。
在本练习中,Wazuh代理运行在Kali GNU/Linux 2025.4机器上,管理器、索引器和仪表板也在本地运行。在发现该漏洞之前,环境已具备正常工作的主动监控:PAM登录会话、sudo执行、监听端口变化以及rootcheck异常事件,所有这些在威胁狩猎模块中均可见。
Wazuh的漏洞检测模块报告了Kali代理上的1个高严重性漏洞,与weasyprint包相关。
WeasyPrint是一个将HTML/CSS转换为PDF文档的Python库,广泛用于从Web应用程序生成报告、发票和动态文档。
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:Ncpe:2.3:a:kozea:weasyprint:*:*:*:*:*:*:*:*,直到但不包括68.0)描述: 在68.0版本之前,WeasyPrint的default_url_fetcher中存在SSRF保护绕过漏洞。即使开发者实现了自定义的url_fetcher来阻止此类访问,攻击者仍可利用该漏洞访问内部网络资源(如localhost服务或云元数据端点)。这是因为底层urllib库会自动跟随HTTP重定向,而不会针对开发者的安全策略重新验证新目的地。版本68.0包含针对此问题的补丁。
参考:
为了在修补前确认实际影响,我针对系统上安装的易受攻击版本设置了一个本地利用场景。
1. 克隆了应用补丁的仓库(主分支,已包含来自68.0版本的修复):
git clone https://github.com/Kozea/WeasyPrint.git
2. 审查了修复后的代码,具体在weasyprint/urls.py中,其中包含default_url_fetcher逻辑和重定向处理:
3. 构建了一个恶意HTML文件,尝试通过iframe窃取本地系统文件,模拟CVE中描述的SSRF/未授权资源访问向量(注意:下面的文件名和文件内容保持与执行时完全一致,与截图中的终端输出匹配):
cat << 'EOF' > ataque.html
<!DOCTYPE html>
<html>
<head>
<title>PoC SSRF - WeasyPrint</title>
</head>
<body>
<h1>Prueba de Exfiltración de Archivos Locales</h1>
<p>Si el parche no está aplicado, el contenido de abajo debería mostrar el archivo /etc/passwd:</p>
</body>
</html>
EOF
python3 -m weasyprint ataque.html resultado_vulnerable.pdf
xdg-open resultado_vulnerable.pdf
4. 结果: 打开生成的PDF时,指向file:///etc/passwd的iframe显示为空,没有系统文件内容。这确认了在修补版本中,对未授权资源的访问尝试被正确阻止。
git clone从官方仓库获取修复后的代码(包含补丁提交b6a14f0...的分支)。iframe访问file:///etc/passwd资源。url_fetcher绕过的SSRF)至关重要。在个人隔离环境(Kali Linux + 本地运行的Wazuh)中进行的实践,用于教育目的。未访问任何第三方系统。