mXSS是什么?如何用mXSS绕过DOMpurify

admin 2022年2月2日23:40:30评论460 views字数 1267阅读4分13秒阅读模式
我每天都刷twitter 但是工作原因 很少有文章能深入阅读 真是让人遗憾啊
然后今天在看一篇很久以前存档的文档,叫《

Write-up of DOMPurify 2.0.0 bypass using mutation XSS

》。DOMPurify就是一个DOM XSS的前端过滤库。
那么什么是mutation XSS?从单词来看,是转变、突变。有人叫他突变XSS,显然这个是没看过文章的人直译的(让我想起了一个名词“路过式攻击”,就是路过的时候踢你一脚的攻击方法)。


今天分享的原文在这里 如果你想看原文的话
https://research.securitum.com/dompurify-bypass-using-mxss/
简单的来说,mXSS就是因为浏览器的解析(HTML parse)过程中不同的html标准的操作导致的,因为浏览器会在渲染不正常的标签的时候做出一些操作。
这个方向里,我推荐大家看下这个帖子:

深入浅出浏览器渲染原理

https://my.oschina.net/u/3375885/blog/2996380?from=timeline
同时,这个页面里的这个东西深深的刺痛了我的心。。我(*&……%¥
可能大数据匹配到了我的薪资吧,哎。


mXSS是什么?如何用mXSS绕过DOMpurify



言归正传,我来大概的意译一下这个文章。
首先DOMPurify会使用DOMParser.prototype.parseFromString ,也就是DOMParser.parseFromString 来使用类似xml格式渲染html,在这个过程中,有一个白名单元素列表,里面含有div  b i img ,属性只有src可以使用的


我们来做一个实验,基于刚才说的规则,我们输入一段代码来解析
<div>I am trying to be <i>malicious</i> <u>here</u>! <img src=1 onerror=alert(1)></div>
lai这样的结果应该是
mXSS是什么?如何用mXSS绕过DOMpurify
因为那个DOMpurify过滤了,因为他是一个前端防XSS的框架嘛。
接下来我们继续做实验
当我们输入
element.innerHTML = '<u>Some <i>HTML'


mXSS是什么?如何用mXSS绕过DOMpurify


是不是感觉哪里怪怪的?不知道是DOMpurify还是浏览器给你自动闭合了标签,也是这个骚操作导致了XSS.


当我们的innerHTML=`<svg></p><style><a id="</style><img src onerror=alert(1)>">`


DOMpurify.sanitize(xxx.innerHTML);   //框架过滤

的时候,经过框架的一顿骚操作然后被浏览器渲染应该是这样的


mXSS是什么?如何用mXSS绕过DOMpurify


嗯 ,这样就离弹窗不远了,反正根据颜色 大家可以看到了吧。img标签被正常解析了,onerror也是。


然后作者给出了终极的poc,也就是

<svg></p><style><a id="</style><img src=1 onerror=alert(1)>">


嗯。我今天刚推荐一个甲方同学使用DOMpurify……还行吧……

本文始发于微信公众号(xsser的博客):mXSS是什么?如何用mXSS绕过DOMpurify

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月2日23:40:30
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   mXSS是什么?如何用mXSS绕过DOMpurifyhttp://cn-sec.com/archives/481959.html

发表评论

匿名网友 填写信息