免责声明:
1.禁止未授权的渗透测试
2.该文章仅供学习参考,切勿拿去尝试
3.此文所提供的信息而造成的任何后果及损失,均由使用者本人负责
4.一切后果与文章作者无关
5.文章所涉及的全部漏洞,均是被修复完漏洞后才公开
一.漏洞名称
PDF-XSS
二.风险级别
自评:中危
三.漏洞描述
Document Format Cross-Site Scripting)是一种利用PDF文件中的漏洞实现的跨站点脚本攻击。
PDF文件是一种常见的电子文档格式,其中包含了丰富的内容,包括图像、文本、链接等等。攻击者可以通过在PDF文件中插入恶意代码,例如JavaScript脚本,来实现PDF-XSS攻击。
XSS攻击来窃取用户敏感信息、篡改网站内容、实施网络钓鱼等行为。
四.漏洞证明
4.1漏洞位置
注册-->登录--->个人中心-->开发者--->个人开发者-->资料上传,上传pdf文件
4.2先注册
4.3 注册成功后。进行登录
4.4进入个人中心
4.5选择进入个人开发者中心后,有一个上传文件的功能,上传pdf文即可
4.6上传pdf文件过后,会生成一个加密后的文件编码
11********************3f
但是这个有一个小小的问题?
你上传的pdf文件,他这个网站不能在线预览pdf文件(或者是他没有预览文件的功能),他只能下载后自己在本地才可以打开文件,那么这样还算漏洞吗???
这样肯定不能算吧
所以说,要怎么才能通过在线预览pdf文件,从而来触发漏洞的产生呢?
所以这个时候,我一般会多看看去寻找一些其他的功能点,看能不能通过其他的功能点来结合刚刚上传的文件来触发。另外一个就是通过js文件寻找一些可以利用的接口,来进行尝试。
我这里是使用最傻逼的方式,下面直接说我是怎么搞的吧
网址中这里有一个在线下载的功能,我通过在线下载的功能点进行抓包,观察后发现,下载的功能点后面拼接着加密后的文件编码所以我这里就通过遍历接收传参值的参数
下载功能的接收传参值:contractDownLoad
http://127.0.0.1/**/**/**/**/**/contractDownLoad?fileId=11***************3f
通过遍历获得的预览参数值
预览功能的接收传参值:html
http://127.0.0.1/**/**/**/**/**/html?fileId=11***************3f
最后拼接参数然后访问链接,来触发漏洞
五.整改方案
1.过滤输入内容:开发人员应该对用户上传的PDF文件进行过滤,确保其中不包含恶意脚本等内容。
2.禁用脚本:PDF文件中的JavaScript脚本是攻击者利用PDF XSS漏洞的主要手段之一,因此,禁用PDF文件中的JavaScript脚本可以有效地防止PDF XSS攻击。可以通过使用PDF阅读器的安全设置来禁用脚本。
3.更新软件:PDF阅读器的安全漏洞可能会导致PDF XSS攻击,因此,使用最新版本的PDF阅读器可以有效地减少PDF XSS漏洞的风险。
4.使用第三方插件解析pdf,不用chrome自带的pdf解析。
5.不允许用户直接打开pdf文件,而是必须下载到本地后才能打开pdf文件。
原文始发于微信公众号(漏洞谷):某一次PDF-XSS漏洞挖掘(安服系列)
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论