标签名中的奥秘?原来是JavaScript

Lobsters Hottest 论文

摘要

PortSwigger的研究文章展示了利用HTML标签名中的JavaScript属性进行新的XSS攻击向量,使WAF绕过在不同浏览器中成为可能。

<p><a href="https://lobste.rs/s/lbsvk7/what_s_tag_name_javascript_apparently">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/08/26 09:37

# 标签名里有什么玄机?JavaScript竟然如此 来源:https://portswigger.net/research/whats-in-a-tag-name-javascript-apparently Gareth Heyes - **发布:**2026年8月25日 星期二 14:24 UTC - **更新:**2026年8月25日 星期二 14:24 UTC 我像往常一样坐在笔记本前,当电视里播放着无聊节目时,我开始琢磨标签名称中允许使用哪些字符。我知道它们必须以"a-zA-Z"开头,但之后的部分呢?我尝试在标签名中放置`alert(1)`,随即想起浏览器会将所有内容转换为大写。接着我好奇是否存在另一个不会进行这种转换的属性。我给标签添加了`id`属性,并在开发者工具中使用`console.dir(x)`进行检查。仔细查看每个属性后,我发现"`localName`"包含了标签名的小写版本——这正是我需要的。之后便是将碎片拼凑起来。我已经知道可以使用`tabindex`让任何标签获得焦点,并且可以将`onfocus`事件与其自身链接。通过`attributes[0].value`可以写入字符串到事件处理程序中,该字符串会被转换为函数,随后可用"`new`"调用为构造函数: 确信你们会认同这相当令人震惊,而且它在所有浏览器中都有效。这也是绕过WAF(Web应用防火墙)的绝佳方式。让我们继续探索。如果`localName`返回标签的小写版本,也许意味着你可以使用大写JavaScript——没错,确实可以: 随后我对标签名的所有变形方式进行了模糊测试。结果显示字母字符、斜杠、空格和换行符都会被转换。有趣的是,行分隔符和段落分隔符却不会。它们在JavaScript中被视为换行符,因此可以构造出看起来怪异的攻击向量: 如果`attributes[0].value`被拦截,还有一些有趣的替代方案: 之后我开始尝试修改HTML。左尖括号实际上可以成为标签名的一部分。结合第一个属性,就能生成一个XSS(https://portswigger.net/web-security/cross-site-scripting)攻击向量: 我尝试了其他属性,比如"part"——它实际上将空格分隔的值转换为数组。然后可以提取事件中的`onfocus(event)`部分,用载荷覆盖事件变量,并将`onfocus`变量替换为Function构造函数。最终导致小写标签名被传递给eval并作为JavaScript执行: 我将此交给Sol 5.6测试,看看它能否推导出有趣的变体。效果相当出色。它发现可以使用`contenteditable`替代`tabindex`使元素获得焦点: 我此前也不知道`getAttributeNode`函数: 它还提醒我注意已被遗忘的setHTMLUnsafe函数: 最终,它找到了一个使用`classList`的优雅变体替代part属性向量: 我最初只是想探讨标签名的有效字符,最终却成为对浏览器异常宽容性的警示。标签名可能演变为JavaScript载荷、URL甚至全新的标记语言。这提醒我们:非常规的HTML以及看似无害的属性(如`localName`、`part`和`classList`)都可能成为隐藏载荷和变换的意外源头,从而绕过黑名单和WAF特征检测。 返回所有文章 (https://portswigger.net/research/articles)

相似文章

值得记忆的原生网页技巧

Hacker News Top

HTMLcat 是一个提供针对 HTML、CSS 和 JavaScript 的小型原生网页技巧的资源,包括示例以及浏览器支持和无障碍访问的说明。

XSS对通行密钥是致命的:无证明的隐藏风险

Lobsters Hottest

本文解释了一个单一的XSS漏洞如何能够在证明设置为'none'的情况下破坏通行密钥的抗钓鱼能力,允许攻击者注册自己的通行密钥并实现持久账户接管。文章呼吁关注这一被忽视的威胁并提出了防御措施。

React2Shell 的故事以及 Next.js 的后续发展

Lobsters Hottest

本文详细介绍了 CVE-2025-5518(React2Shell)的发现与披露过程。这是一个存在于 React Server Components 中的严重远程代码执行漏洞,研究人员通过绕过 Flight 协议的验证机制来访问对象原型。

Antiquated HTML Snippets and Artefacts

Lobsters Hottest

# Antiquated HTML Snippets and Artefacts Source: [https://vale.rocks/posts/html-relics](https://vale.rocks/posts/html-relics) With ever\-changing devices, browsers, operating systems, form factors, specifications, personal preferences, tooling, and corporate interests, the web is in a constant state of flux\. As a result, so is theHTMLwe write\. For every line of theHTMLspecification itself that has changed since the language’s inception, there are many more bits ofHTMLthat have seen what I’ll c