人民日报林治波社长发出灵魂拷问:你们是没有常识,还是没有良知?

惨烈的高峰防御战—“圣元春战役”打响!

母子乱伦:和儿子做了,我该怎么办?

一定在信仰的指导下抗击疫情《马克思主义信仰:战胜新冠肺炎疫情的内生力量》

2021年推特网黄Top10排行榜

生成图片,分享到微信朋友圈

自由微信安卓APP发布,立即下载! | 提交文章网址
查看原文

实战|通过恶意 pdf 执行 xss 漏洞

LemonSec 2022-05-04

文章来源 :利刃信安

漏洞测试:


我们介绍如何把 JavaScript 嵌入到 PDF 文档之中。

我使用的是迅捷 PDF 编辑器未注册版本

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


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


选择“页面属性”命令


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


填写 JavaScript 代码


4、在弹出的“JavaScript 编辑器”对话框中输入代码:

app.alert('XSS');br


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

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


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



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

<html><body><objectdata="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 和相关属性。


可以使用第三方插件解析pdf,不用chrome自带的pdf解析就行,https://github.com/adobe-type-tools/cmap-resources


漏洞修复结果


浏览器针对TXT/pdf等文件一般是直接打开,从而导致恶意的文件会被浏览器直接执行,因此解决方法就是告诉浏览器哪些类型的文件需要下载而不是直接打开.我们可以在nginx解析容器中通过反向代理可以直接过滤访问的url在指定的访问中添加header。


location /{if ($request_filename ~* ^.*?.(txt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){                        add_header Content-Disposition attachment;                 }    }


修复检查

点击后直接下载


参考链接:https://www.t00ls.net/thread-48480-1-1.htmlhttps://blog.xss.lc/experience-sharing/71.htmlhttps://ahbbs.anhunsec.cn/thread-351.htm#628https://ahbbs.anhunsec.cn/thread-355.htm


声明:本公众号所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径,所有渗透都需获取授权!否则需自行承担,本公众号及原作者不承担相应的后果


推荐↓↓↓

文章有问题?点此查看未经处理的缓存