vlambda博客
学习文章列表

渗透干货—利用pdf文件进行XSS和CSRF攻击

0x00 前言

你的pdf文件安全吗?你还在使用浏览器随意打开pdf文件吗?

我们知道,遇到上传点时,我们可以通过上传html文件来执行xss,但是如果禁止了html等恶意文件,只允许上传png、jpg、gif、pdf等文件,很多人可能直接忽略了,以为它是安全的,那就大错特错了。

0x01 利用pdf文件进行XSS攻击

首先我们需要制作一个恶意的pdf文件,随便使用一个pdf编辑器,新建空白页面。

渗透干货—利用pdf文件进行XSS和CSRF攻击
然后选中缩略图,点击属性,此时在右侧可以看到属性栏,点击动作打开页面,之后再新建运行JavaScript。

渗透干货—利用pdf文件进行XSS和CSRF攻击

渗透干货—利用pdf文件进行XSS和CSRF攻击

在弹出的“JavaScript 编辑器”对话框中输入以下代码,然后保存文件:

app.alert('xss');

你可能会疑问为什么不是alert(‘xss’),这是因为Adobe支持自身的 JavaScript 对象模型,利用JavaScript进行攻击时只能使用Adobe所支持的功能。好了,恶意文件已经制作完成了,现在我们去尝试一下它在不同浏览器的效果。

在Edge浏览器可以成功执行

渗透干货—利用pdf文件进行XSS和CSRF攻击

在Google浏览器可以成功执行

渗透干货—利用pdf文件进行XSS和CSRF攻击

在火狐浏览器无法执行,enen,火狐NB!

渗透干货—利用pdf文件进行XSS和CSRF攻击

最后将制作的pdf文件上传到目标网站即可,若该网站提供了pdf预览功能,则大概率存在xss漏洞,如下所示:

渗透干货—利用pdf文件进行XSS和CSRF攻击

Stefano Di Paola 和 Giorgio Fedon 在第 23 届 CCC 安全会议中提出,除了把 JavaScript 嵌入 PDF 文件中执行,还可以利用基于 DOM 的方法执行 PDF XSS。对了,Stefano Di Paola把 PDF 中的 DOM XSS 称为 UXSS(Universal Cross-Site Scripting),感兴趣的可以去看看相关资料。

0x02 利用pdf文件进行CSRF攻击

接着我们再看一个例子,我又重新制作了一个恶意的pdf文件,在pdf页面新建一个表单,然后鼠标按下的时候会打开一个网页链接。

渗透干货—利用pdf文件进行XSS和CSRF攻击

设想一个场景,假如转账操作的URL为:test.com/api/transferAccounts?user=hack&money=200,那么hack用户将此链接插入上述pdf中,那么会导致什么后果?对,就是CSRF漏洞。

当然真正的转账流程和风控不会如此简单,我这里只是抛砖引玉,提供一个思路。

0x03 End
简单地说,任何支持 PDF 文件的网站都可能存在这种漏洞,更为致命的是,很多网站都提供了pdf在线预览功能。
那么这个漏洞如何修复呢?我提供两种思路:

第一种简单粗暴,直接取消在线预览功能,改为下载。第二种就是使用在线预览组件,将pdf转换成图片显示,使其植入的js代码无法生效。



往期精彩推荐



各位老爷,欢迎关注