IKEA.com本地文件包含漏洞之PDF解析的巧妙利用
字数 1149 2025-08-18 11:37:41

PDF解析中的本地文件包含漏洞分析与利用

漏洞背景

本地文件包含(LFI)漏洞是一种高危漏洞类型,攻击者可能利用其:

  • 读取服务器文件源码或敏感信息
  • 包含恶意文件
  • 执行任意代码
  • 最终可能导致服务器被完全控制

大多数LFI攻击源于动态加载图像或其他文件的代码,当请求的文件名或路径未经过正确验证时就会发生。

漏洞发现过程

目标识别

  1. 使用Aquatone工具枚举子域,发现Bathroomplanner.IKEA.com子域
  2. 该子域提供在线浴室规划工具,允许用户:
    • 查找产品并添加到列表
    • 通过电子邮件发送产品列表
    • 以PDF格式下载产品列表

流量分析

使用Burp Suite拦截流量,发现PDF生成请求包含几个关键字段:

  • data: 包含产品和图片代码的JSON blob
  • shopping: 包含产品列表的JSON blob
  • pdf: 一长串不明字符
  • images: base64编码的图片

参数解码分析

  1. pdf参数经过URL编码和Base64编码双重处理
  2. 解码后得到的是PDF模板字符串,用于生成最终的PDF购物清单

漏洞利用尝试

初始尝试

在模板中插入``尝试包含系统文件,但PDF生成器无法识别为有效图片。

深入分析

  1. 通过模板中的独特字符串识别使用的PDF库为mPDF
  2. 研究mPDF的CHANGELOG,发现2017年10月19日的更新改变了注释标签的处理方式
  3. 进一步研究发现旧版本mPDF存在严重安全问题,可通过注释标记包含文件

成功利用

在模板中添加恶意注释标记:

<annotation file="/etc/passwd" content="/etc/passwd" icon="Graph" title="Attached File: /etc/passwd" pos-x="195" />

通过Burp Suite Repeater发送修改后的模板,下载PDF后用Foxit Reader打开,可查看嵌入的服务器文件内容。

技术原理

mPDF库的注释功能(<annotation>标签)存在设计缺陷:

  • 允许直接引用服务器文件路径
  • 未对文件路径进行充分验证
  • 旧版本未禁用此危险功能

修复建议

  1. 禁止用户操纵PDF模板:不应允许客户端控制PDF生成模板
  2. 客户端渲染方案:使用jsPDF等客户端库生成PDF
  3. 及时更新库:升级到最新版mPDF,确保禁用危险功能
  4. 输入验证:对所有用户提供的参数进行严格验证

漏洞披露时间线

  1. 2018.6.16:发现并提交漏洞
  2. 2018.6.17:IKEA临时禁用PDF生成功能
  3. 2018.6.18-2018.9.11:漏洞确认、修复和奖励过程
  4. 2018.9.18:正式公开漏洞详情

总结

此案例展示了:

  1. 第三方库安全更新的重要性
  2. 用户输入控制的危险性
  3. 多层编码可能隐藏的安全问题
  4. 负责任的漏洞披露流程

通过分析PDF生成过程中的参数处理,结合对使用库的深入研究,成功发现并利用了本地文件包含漏洞。这提醒开发人员需要全面审查第三方库的安全特性,并及时应用安全更新。

PDF解析中的本地文件包含漏洞分析与利用 漏洞背景 本地文件包含(LFI)漏洞是一种高危漏洞类型,攻击者可能利用其: 读取服务器文件源码或敏感信息 包含恶意文件 执行任意代码 最终可能导致服务器被完全控制 大多数LFI攻击源于动态加载图像或其他文件的代码,当请求的文件名或路径未经过正确验证时就会发生。 漏洞发现过程 目标识别 使用Aquatone工具枚举子域,发现 Bathroomplanner.IKEA.com 子域 该子域提供在线浴室规划工具,允许用户: 查找产品并添加到列表 通过电子邮件发送产品列表 以PDF格式下载产品列表 流量分析 使用Burp Suite拦截流量,发现PDF生成请求包含几个关键字段: data : 包含产品和图片代码的JSON blob shopping : 包含产品列表的JSON blob pdf : 一长串不明字符 images : base64编码的图片 参数解码分析 pdf 参数经过URL编码和Base64编码双重处理 解码后得到的是PDF模板字符串,用于生成最终的PDF购物清单 漏洞利用尝试 初始尝试 在模板中插入 `` 尝试包含系统文件,但PDF生成器无法识别为有效图片。 深入分析 通过模板中的独特字符串识别使用的PDF库为mPDF 研究mPDF的CHANGELOG,发现2017年10月19日的更新改变了注释标签的处理方式 进一步研究发现旧版本mPDF存在严重安全问题,可通过注释标记包含文件 成功利用 在模板中添加恶意注释标记: 通过Burp Suite Repeater发送修改后的模板,下载PDF后用Foxit Reader打开,可查看嵌入的服务器文件内容。 技术原理 mPDF库的注释功能( <annotation> 标签)存在设计缺陷: 允许直接引用服务器文件路径 未对文件路径进行充分验证 旧版本未禁用此危险功能 修复建议 禁止用户操纵PDF模板 :不应允许客户端控制PDF生成模板 客户端渲染方案 :使用jsPDF等客户端库生成PDF 及时更新库 :升级到最新版mPDF,确保禁用危险功能 输入验证 :对所有用户提供的参数进行严格验证 漏洞披露时间线 2018.6.16:发现并提交漏洞 2018.6.17:IKEA临时禁用PDF生成功能 2018.6.18-2018.9.11:漏洞确认、修复和奖励过程 2018.9.18:正式公开漏洞详情 总结 此案例展示了: 第三方库安全更新的重要性 用户输入控制的危险性 多层编码可能隐藏的安全问题 负责任的漏洞披露流程 通过分析PDF生成过程中的参数处理,结合对使用库的深入研究,成功发现并利用了本地文件包含漏洞。这提醒开发人员需要全面审查第三方库的安全特性,并及时应用安全更新。