网络安全-dom破坏结合jq漏洞以及框架漏洞造成的xss-World War 3

目录

一、环境

二、开始介绍

三、寻找触发点

3.1总结一下方法:


一、环境

XSS Game - Learning XSS Made Simple! | Created by PwnFunction

二、开始介绍

如果notify为真的话那么html是

复制代码
<div class="alert alert-warning" role="alert"><b>Meme</b> created from ${DOMPurify.sanitize(text)}</div>

代码解析

meme-code的值

在页面随便输入一个text=aaaa&img=bbbbb

很明显调用到这里因为text和img都存在了

而我们可以很明显看到一点Meme Code没值,没值的话那就代表onload根本没有加载,当我们什么都没写的情况下很明显加载值了

当我们把地址参数写对的情况下,我们的onload很明显是可以执行的

而我们从始至终都没有看到created...,因为notify是false

三、寻找触发点

很明显经过上面的介绍,我们必须要notify为true不然无法下手,那这不就是我们dom破坏的技巧

并且乍一看经过DOMPurify后的这些交互点都很安全,但是使用html()解析会存在标签逃逸问题。

两种解析html的方式:jquery.html&innerhtmlinnerHTML是原生js的写法,Jqury.html()也是调用原生的innerHTML方法,但是加了自己的解析规则(后文介绍)。

关于两种方式:Jquery.html()innerHTMl的区别我们用示例来看。

对于innerHTML:模拟浏览器自动补全标签,不处理非法标签。同时,<style>标签中不允许存在子标签(style标签最初的设计理念就不能用来放子标签),如果存在会被当作text解析。因此<style><style/><script>alert(1337)//会被渲染如下

复制代码
<style>
    <style/><script>alert(1337)//
</style>

对于Jqury.html(),最终对标签的处理是在htmlPrefilter()中实现:jquery-src,其后再进行原生innerHTML的调用来加载到页面。

复制代码
rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^/>x20trnf]*)[^>]*)/>/gi

jQuery.extend( {
    htmlPrefilter: function( html ) {
        return html.replace( rxhtmlTag, "<$1></$2>" );
    }
    ...
})

tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];

有意思的是,这个正则表达式在匹配`<*/>`之后会重新生成一对标签(区别于直接调用innerHTML)

所以相同的语句`<style><style/><script>alert(1337)//`则会被解析成如下形式,成功逃逸`<script>`标签。

复制代码
<style>    
    <style>
</style>
<script>alert(1337)//

我们知道DOMPurify的工作机制是将传入的payload分配给元素的innerHtml属性,让浏览器解释它(但不执行),然后对潜在的XSS进行清理。由于DOMPurify在对其进行innerHtml处理时,script标签被当作style标签的text处理了,所以DOMPurify不会进行清洗(因为认为这是无害的payload),但在其后进入html()时,这个无害payload就能逃逸出来一个有害的script标签从而xss。

3.1总结一下方法:

1.绕过过滤框架

2.html 逃逸出style标签

3.nofity dom破坏 使他为真

<img name=notify><style></style><script>alert//因为img是异步方法,那么DOMPurity会先写,那我们notify就会变成ture,那么我们就会触发

最终payload

复制代码
text=<img name%3dnotify><style><style%2F><script>alert(1337)%2F%2F&img=https://i.imgur.com/PdbDexI.jpg

之后就搞定了

最终的加载就是加载到div标签里面了

相关推荐
漏洞谷1 天前
白帽子为什么几乎都绕不开 httpx:一款 HTTP 资产探测工具的技术价值
web安全·漏洞挖掘·安全工具
用户962377954484 天前
VulnHub DC-3 靶机渗透测试笔记
安全
叶落阁主5 天前
Tailscale 完全指南:从入门到私有 DERP 部署
运维·安全·远程工作
用户962377954487 天前
DVWA 靶场实验报告 (High Level)
安全
数据智能老司机7 天前
用于进攻性网络安全的智能体 AI——在 n8n 中构建你的第一个 AI 工作流
人工智能·安全·agent
数据智能老司机7 天前
用于进攻性网络安全的智能体 AI——智能体 AI 入门
人工智能·安全·agent
用户962377954488 天前
DVWA 靶场实验报告 (Medium Level)
安全
red1giant_star8 天前
S2-067 漏洞复现:Struts2 S2-067 文件上传路径穿越漏洞
安全
用户962377954488 天前
DVWA Weak Session IDs High 的 Cookie dvwaSession 为什么刷新不出来?
安全
cipher9 天前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全