来自PDF的XSS(转载)

PDF(Portable Document Format)是由 Adobe 公司开发而成的一种电子文件格式,可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中,该格式文件还可以包含超文本链接、声音和动态影像等电子信息。

正是由于 PDF 文件的种种优点,使其逐渐成为 Internet 上进行电子文档发行和数字化信息传播的最理想的文档格式。然而,和 Adobe Flash 一样,PDF 也存在 XSS 漏洞。

PDF 文档之所以不安全,正因为它本身支持 JavaScript 脚本语言。

JavaScript 语言易于创建交互网页,Adobe 通过增强 JavaScript,可以方便地将交互级别集成到 PDF 文档中


下面,我们介绍如何把 JavaScript 嵌入到 PDF 文档之中。我使用的是迅捷 PDF 编辑器未注册版本

启动迅捷 PDF 编辑器打开一个 PDF 文件,或者使用“创建 PDF 文件”功能,通过将其他文档和资源转换为“可移植文档格式”来创建 PDF 文件。

图片1
单击左侧的“页面”标签,选择与之对应的页面缩略图,然后从选项下拉菜单中选择“页面属性”命令
图片2
选择“页面属性”命令

在“页面属性”对话框单击“动作”标签,再从“选择动作”下拉菜单中选择“运行 JavaScript”命令,然后单击【添加】按钮,弹出 JavaScript 编辑器对话框
图片3
填写 JavaScript 代码

在弹出的“JavaScript 编辑器”对话框中输入代码:
app.alert(‘XSS’);

单击【确定】按钮保存 PDF 文件。

这里需要注意的是:Adobe 支持自身的 JavaScript 对象模型,例如 alert(‘xss’)必须被 APP 对象调用,因此变成了 app.alert(‘xss’)。这意味着,利用 JavaScript 进行攻击时只能使用 Adobe 所支持的功能。

关闭软件,直接打开刚才保存的 PDF 文件,JavaScript 代码即被执行。经过测试最新版本的 360 浏览器和谷歌浏览器支持
图片4
现在,尝试把 PDF 文件嵌入到网页中并试运行。创建一个 HTML 文档,代码如下:

<html>
<body>
<object
data="test.pdf" width="100%" heigh="100%"
type="application/pdf"></object>
</body>
</html>

除了把 JavaScript 嵌入 PDF 文件中执行,还可以利用基于 DOM 的方法执行 PDF XSS。此类方法由 Stefano Di Paola 和 Giorgio Fedon 在第 23 届 CCC 安全会议中提出,大家可以参考论文 Adobe Acrobat。

Stefano Di Paola 把 PDF 中的 DOM XSS 称为 UXSS(Universal Cross-Site Scripting)。事实上,任何支持 PDF 文件的网站都可能存在这种漏洞。

修复方法

经验分享 > 来自PDF的XSS

来自PDF的XSS
经验分享 master 2个月前 (10-14) 967次浏览 已收录 4个评论 扫描二维码 来自PDF的XSS

PDF(Portable Document Format)是由 Adobe 公司开发而成的一种电子文件格式,可以将文字、字型、格式、颜色及独立于设备和分辨率的图形图像等封装在一个文件中,该格式文件还可以包含超文本链接、声音和动态影像等电子信息。

正是由于 PDF 文件的种种优点,使其逐渐成为 Internet 上进行电子文档发行和数字化信息传播的最理想的文档格式。然而,和 Adobe Flash 一样,PDF 也存在 XSS 漏洞。

PDF 文档之所以不安全,正因为它本身支持 JavaScript 脚本语言。

JavaScript 语言易于创建交互网页,Adobe 通过增强 JavaScript,可以方便地将交互级别集成到 PDF 文档中。

下面,我们介绍如何把 JavaScript 嵌入到 PDF 文档之中。我使用的是迅捷 PDF 编辑器未注册版本

启动迅捷 PDF 编辑器打开一个 PDF 文件,或者使用“创建 PDF 文件”功能,通过将其他文档和资源转换为“可移植文档格式”来创建 PDF 文件。
单击左侧的“页面”标签,选择与之对应的页面缩略图,然后从选项下拉菜单中选择“页面属性”命令

选择“页面属性”命令

③ 在“页面属性”对话框单击“动作”标签,再从“选择动作”下拉菜单中选择“运行 JavaScript”命令,然后单击【添加】按钮,弹出 JavaScript 编辑器对话框

▲图 7-34 填写 JavaScript 代码

④ 在弹出的“JavaScript 编辑器”对话框中输入代码:
app.alert(‘XSS’);

单击【确定】按钮保存 PDF 文件。

这里需要注意的是:Adobe 支持自身的 JavaScript 对象模型,例如 alert(‘xss’)必须被 APP 对象调用,因此变成了 app.alert(‘xss’)。这意味着,利用 JavaScript 进行攻击时只能使用 Adobe 所支持的功能。

⑤ 关闭软件,直接打开刚才保存的 PDF 文件,JavaScript 代码即被执行。经过测试最新版本的 360 浏览器和谷歌浏览器支持

现在,尝试把 PDF 文件嵌入到网页中并试运行。创建一个 HTML 文档,代码如下:

<html>
<body>
<object
data="test.pdf" width="100%" heigh="100%"
type="application/pdf"></object>
</body>
</html>

除了把 JavaScript 嵌入 PDF 文件中执行,还可以利用基于 DOM 的方法执行 PDF XSS。此类方法由 Stefano Di Paola 和 Giorgio Fedon 在第 23 届 CCC 安全会议中提出,大家可以参考论文 Adobe Acrobat。

Stefano Di Paola 把 PDF 中的 DOM XSS 称为 UXSS(Universal Cross-Site Scripting)。事实上,任何支持 PDF 文件的网站都可能存在这种漏洞。

修复方法

作为网站管理员或开发者,可以选择强迫浏览器下载 PDF 文件,而不是提供在线浏览等,或修改 Web 服务器配置的 header 和相关属性。

注:本篇文章非原创,而是转载
转载地址:https://blog.xss.lc/experience-sharing/71.html
仅有 1 条评论
  1. 11 11

添加新评论