xss dompurify绕过 chrome
主要利用chrome的<svg>和<p>标签
一般来说 浏览器进行解析的时候,解析规则趋于xml解析若不是html解析
主要区别在于HTML中的某些标签在从文本反序列化时不能有子标签。例如<style>
。如果查看HTML规范,我们会发现它的内容模型是Text。即使您尝试将元素放在<style>
中,它也会被视为文本:
对于SVG来说,事情并非如此。让我们继续用上面的例子,但<style>
是<svg>
的子标签:
<style>
有了子元素
原理
1.<svg><p> 被浏览器重写成 <svg><p></svg>
2.添加到innerHTML中 <svg></svg><p></p> 如果<svg><p>中还有子标签style的话,可能会造成标签形成最初的HTML解析假定某些元素在<svg>
内,而在随后的解析中,这些元素在<svg>
之外,从而允许添加任意HTML标签。
例如
<svg><p><style><a id="</style><img src=1 onerror=alert(1)>">
被浏览器解析后
<svg><p></p><style><a id="</style><img src=1 onerror=alert(1)>"></a></style></svg>
放入innerHTML后
<svg></svg><p></p><style><a id="</style><img src="" onerror="alert(1)">">"
现在<svg>
元素立即结束,后面的一切代码都是普通的HTML。这意味着<style>
——</style>
,包含onerror属性的<img>
标签被写入DOM树。
summerized by https://xz.aliyun.com/t/6413
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了