来自PDF的XSS

经验分享 master 11个月前 (10-14) 1545次浏览 已收录 5个评论 扫描二维码

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

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

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

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

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

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

来自PDF的XSS

选择“页面属性”命令

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

来自PDF的XSS
▲图7-34  填写JavaScript代码

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

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

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

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

来自PDF的XSS

来自PDF的XSS

现在,尝试把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和相关属性。

最后,提供一个XSS.PDF的在线文档,大家可以点击体验一下

点击打开xss.pdf
URL地址

https://blog.xss.lc/wp-content/uploads/2018/10/2018101403465640.pdf

 


Xss.lc私人博客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:来自PDF的XSS
喜欢 (8)
master
关于作者:
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
(5)个小伙伴在吐槽
  1. 土司大军来顶
    goku2018-11-13 11:38 回复 Linux | Chrome 61.0.3163.128
  2. 来这里给你顶一下,涨知识。
    KC2018-11-15 08:45 回复 Windows 7 | Chrome 70.0.3538.102
  3. 师傅你好,看了你的思路受益匪浅。我尝试用app.lanchURL进行跳转,但是并没有成功,也没有提示跨域的警告,是我的姿势不对嘛还是说不可以呢。。而且貌似这个app.alert不能弹出来cookie诶
    Hpdoger2018-11-15 23:00 回复 Windows 10 | Chrome 69.0.3497.100
    • master
      你找下,有个打开网址的事件
      master2018-11-16 10:50 回复 Windows 10 | Chrome 70.0.3538.77
  4. 请问如何实现浏览器打开pdf文件就自动跳转到指定链接,尝试了在pdf中直接新增‘打开网页链接’和launchURL都没有这种效果。//t00ls的自动跳转pdf文件无法下载了,忘记那段js怎么写了。。。。。。
    hello2019-02-27 21:56 回复 Linux | Firefox浏览器 65.0