挖洞经验 | Facebook系统HTML转PDF文档可能引起的RCE漏洞
字数 1260 2025-08-18 11:39:00
Facebook系统HTML转PDF文档RCE漏洞分析
漏洞概述
本漏洞存在于Facebook旗下Workplace by Facebook服务的法律协议签署系统中,攻击者能够通过HTML注入在服务端实现远程代码执行(RCE)。漏洞核心在于HTML转PDF过程中对用户输入处理不当,结合邮件伪造漏洞可形成完整的攻击链。
漏洞细节
1. 漏洞入口
- 当用户创建Workplace by Facebook账号时,会收到来自
legal_noreply@fb.com的确认邮件 - 邮件中包含一个带有token的协议签署URL:
https://legal.tapprd.thefacebook.com/tapprd/Portal/ShowWorkFlow/AnonymousShowStage?token= - 该页面包含用户信息输入区域(姓名、地址、邮箱、职业等)
2. HTML注入点
- 正常情况下,Web应用会对所有输入文本执行HTML编码
- 关键漏洞:服务端在将内容转换为PDF时会对HTML编码进行解码
- 攻击者可利用此特性注入恶意HTML代码
3. HTML转PDF漏洞利用
攻击者发现可以通过file://协议的IFRAME元素进行内部网络探测:
-
使用IFRAME扫描Web应用内部网络
- 可识别内部IP地址
- 可探测开放/关闭端口
-
发现的三种提权至RCE的方法:
- 利用另一个漏洞获取Web应用内部系统路径,提取
web.config文件获取敏感配置 - 通过内部网络扫描发现存在漏洞的WebLogic服务器
- 使用
about://协议格式获取IE浏览器信息,推测系统使用Windows API接口,可嵌入针对IE的Payload
- 利用另一个漏洞获取Web应用内部系统路径,提取
4. 邮件伪造漏洞
- 漏洞URL:
https://legal.tapprd.thefacebook.com/tapprd/Portal/ShowWorkFlow/AnonymousEmbed/XXXXXXXXXXXXX - 漏洞表现:
- 可任意指定收件人邮箱地址和姓名
- 收件人姓名字段未过滤HTML注入
- 可编辑邮件正文内容
- 结合HTML转PDF漏洞可形成完整攻击链
漏洞复现步骤
- 获取协议签署链接(通过正常注册流程或社会工程学)
- 在输入字段注入恶意HTML代码(需绕过前端过滤)
- 利用
file://协议探测内部网络 - 根据探测结果选择提权方法:
- 获取web.config文件
- 攻击内部WebLogic服务器
- 使用IE特定Payload
- 结合邮件伪造漏洞扩大攻击范围
防御措施
-
输入处理:
- 对所有用户输入进行严格的HTML编码
- 在PDF转换前不应解码用户输入内容
-
PDF转换安全:
- 限制PDF转换器可加载的资源(禁用file://等协议)
- 使用沙箱环境进行PDF转换
-
邮件系统:
- 实现严格的发件人验证
- 对所有动态生成的邮件内容进行过滤
-
网络隔离:
- 关键服务应与内部网络隔离
- 实施严格的网络访问控制
时间线
- 2019.4.7 漏洞初报
- 2019.4.10 Facebook确认
- 2019.5.1 Facebook要求更多验证资料
- 2019.5.21 Facebook确认漏洞有效性
- 2019.6.18 Facebook修复漏洞
- 2019.7.3 Facebook发放1000$赏金
经验总结
- 服务端文件转换服务是常见攻击面,需特别关注
- 链式漏洞利用可显著提升攻击效果
- 第三方系统集成需进行同等安全评估
- 内部网络探测是提权的重要前置步骤
- 邮件系统是攻击传播的理想媒介