autofocus属性的自创标签xss(xss)
字数 1060 2025-08-20 18:18:04

Chrome中利用autofocus属性的XSS攻击技术详解

概述

本文档详细讲解如何利用Chrome浏览器中autofocus属性的特殊行为实现XSS攻击的技术。该技术利用了Chrome的一个特性:autofocus可以与所有HTML标签一起使用,而不仅仅是表单元素。

技术原理

在标准HTML中,autofocus属性通常只用于表单元素(如inputselect等)。但Chrome浏览器中存在一个特性,允许autofocus与任何HTML元素配合使用,当元素获得焦点时会触发onfocus事件,从而可以执行任意JavaScript代码。

攻击方法

1. 使用已有标准HTML标签

<iframe autofocus onfocus=alert(1)>
<a autofocus onfocus=alert(23) href=#>x</a>

特点

  • 利用标准HTML标签
  • 添加autofocus使元素自动获得焦点
  • 触发onfocus事件执行JS代码

2. 使用tabindex属性

任何HTML元素都可以通过tabindex属性获得焦点能力:

<xss tabindex=1 onfocus=alert(1) autofocus>

要点

  • tabindex值为正数时,元素可被聚焦
  • 结合autofocus实现自动触发

3. 使用contenteditable属性

contenteditable属性使元素可编辑,同时也使其可获得焦点:

<xss onfocus=alert(23) autofocus contenteditable>

注意

  • contenteditable即使没有赋值(空字符串)也有效
  • 默认会使元素可编辑

4. 使用-webkit-user-modify样式

非标准但Chrome支持的CSS属性:

<xss style="-webkit-user-modify:read-write" onfocus=alert(1) autofocus>

或:

<xss style="-webkit-user-modify:read-write-plaintext-only" onfocus=alert(1) autofocus>

说明

  • -webkit-user-modify不是标准CSS属性
  • 但在Chrome中仍可使用
  • 设置后可编辑状态使元素可获得焦点

应用场景

  1. 绕过用户交互要求:在需要用户交互才能触发的XSS场景中,使用autofocus可以自动触发
  2. 突破元素上下文限制:当无法从当前元素上下文逃逸时,可利用此技术
  3. 自定义标签利用:即使使用非标准标签也能生效

防御措施

  1. 严格过滤HTML标签的autofocus属性
  2. onfocus等事件处理器进行过滤
  3. 限制tabindexcontenteditable等属性的使用
  4. 过滤非标准CSS属性如-webkit-user-modify
  5. 使用CSP(Content Security Policy)限制脚本执行

总结

该技术利用了Chrome浏览器对autofocus属性的宽松处理,结合各种可获得焦点的HTML特性,实现了无需用户交互的XSS攻击。防御时需要从HTML属性、事件处理器和CSS属性等多方面进行综合防护。

Chrome中利用autofocus属性的XSS攻击技术详解 概述 本文档详细讲解如何利用Chrome浏览器中 autofocus 属性的特殊行为实现XSS攻击的技术。该技术利用了Chrome的一个特性: autofocus 可以与所有HTML标签一起使用,而不仅仅是表单元素。 技术原理 在标准HTML中, autofocus 属性通常只用于表单元素(如 input 、 select 等)。但Chrome浏览器中存在一个特性,允许 autofocus 与任何HTML元素配合使用,当元素获得焦点时会触发 onfocus 事件,从而可以执行任意JavaScript代码。 攻击方法 1. 使用已有标准HTML标签 特点 : 利用标准HTML标签 添加 autofocus 使元素自动获得焦点 触发 onfocus 事件执行JS代码 2. 使用tabindex属性 任何HTML元素都可以通过 tabindex 属性获得焦点能力: 要点 : tabindex 值为正数时,元素可被聚焦 结合 autofocus 实现自动触发 3. 使用contenteditable属性 contenteditable 属性使元素可编辑,同时也使其可获得焦点: 注意 : contenteditable 即使没有赋值(空字符串)也有效 默认会使元素可编辑 4. 使用-webkit-user-modify样式 非标准但Chrome支持的CSS属性: 或: 说明 : -webkit-user-modify 不是标准CSS属性 但在Chrome中仍可使用 设置后可编辑状态使元素可获得焦点 应用场景 绕过用户交互要求 :在需要用户交互才能触发的XSS场景中,使用 autofocus 可以自动触发 突破元素上下文限制 :当无法从当前元素上下文逃逸时,可利用此技术 自定义标签利用 :即使使用非标准标签也能生效 防御措施 严格过滤HTML标签的 autofocus 属性 对 onfocus 等事件处理器进行过滤 限制 tabindex 、 contenteditable 等属性的使用 过滤非标准CSS属性如 -webkit-user-modify 使用CSP(Content Security Policy)限制脚本执行 总结 该技术利用了Chrome浏览器对 autofocus 属性的宽松处理,结合各种可获得焦点的HTML特性,实现了无需用户交互的XSS攻击。防御时需要从HTML属性、事件处理器和CSS属性等多方面进行综合防护。