首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >利用Chrome新特性在隐藏input和meta标签中实现XSS攻击

利用Chrome新特性在隐藏input和meta标签中实现XSS攻击

原创
作者头像
qife122
发布2025-07-22 19:34:01
发布2025-07-22 19:34:01
5400
举报

在这篇文章中,我们将展示如何(滥)用Chrome的新HTML弹窗功能来利用meta标签和隐藏input中的XSS漏洞。

这一切始于我在Twitter上注意到Chrome的新弹窗行为。我们都知道那些烦人的模态对话框——现在你不需要JavaScript就能创建这些弹窗了!多么"令人欣喜",这将会是一场新闻订阅弹窗的灾难。

我注意到这个功能后,开始思考这些弹窗会引入哪些JavaScript事件。果然,你可以使用ontoggle和onbeforetoggle事件,这些事件适用于具有popover属性的元素。这个属性会使元素保持隐藏状态,直到你通过使用popovertarget属性的元素(比如按钮)来切换它。

这对绕过WAF非常有用,因为你可以使用onbeforetoggle事件,而这个事件不太可能被基于属性的阻止列表拦截:

代码语言:html
复制
<button popovertarget=xss>点击我</button>
<div id=xss popover onbeforetoggle=alert(1)>XSS</div>

在上面的例子中,你可以看到按钮元素通过popovertarget定位到自定义的'xss'元素。当按钮被点击时,onbeforetoggle事件就会被触发。

隐藏input中的XSS

我像往常一样在Twitter上发布了这个发现,Mario Heiderich指出这甚至在隐藏input中也能工作。这很重要,因为通常如果你在隐藏input中有XSS,可能很难利用,因为大多数事件不起作用。你可以使用访问键,但这需要大量用户交互。然而,使用弹窗可以让你在隐藏input中使用新事件:

代码语言:html
复制
<input type=hidden id=xss popover onbeforetoggle=alert(1)>
<button popovertarget=xss>点击我</button>

Mario提到这需要两个注入点:一个经过无害HTML注入处理的点,和一个在隐藏input中的点。但这让我思考——也许只需要一个点就够了。我创建了一个HTML页面测试了两个元素有相同id时会发生什么。想象一个网站使用了popovertarget属性,并且在隐藏input中有XSS漏洞:

代码语言:html
复制
<input type=hidden id=newsletter popover onbeforetoggle=alert(1)>
<!-- 网站原有代码 -->
<button popovertarget=newsletter>订阅新闻</button>

我们的注入代码会在隐藏input中执行onbeforetoggle事件,因为它先出现。这意味着你只需要一个注入点,只要它出现在任何现有弹窗之前。弹窗功能让你可以通过点击在隐藏input中触发ontoggle和onbeforetoggle事件。所以如果你在隐藏input中有XSS,并且页面上已有弹窗元素,这会非常有用。

meta标签中的XSS

事情已经变得很有趣了,但等等,还有更多!Mathias Karlsson提出了一个很好的观点:这项技术让你可以在meta元素上使用onbeforetoggle事件,只要页面上有现有的弹窗元素。这很重要,因为和隐藏input一样,meta元素受到严格限制。

在下面的例子中,你在meta元素中有一个注入,它使用了popover属性和一个重复的id(newsletter),目标是页面上现有的弹窗:

代码语言:html
复制
<meta id=newsletter popover onbeforetoggle=alert(1)>
<!-- 网站原有代码 -->
<button popovertarget=newsletter>订阅新闻</button>

当用户尝试订阅新闻时,反而会触发隐藏input上的onbeforetoggle事件。

像往常一样,我们已经更新了XSS备忘单加入这些新向量。如果你喜欢XSS过滤器绕过技术,你可能会喜欢我们的Web Security Academy实验室,比如利用链接标签中的XSS,以及这个过滤大多数HTML标签的案例。

享受吧!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档