一个有趣的xss绕过过程
字数 938 2025-08-26 22:11:15

XSS绕过技术实战分析:从过滤绕过到成功利用

1. 初始测试与基本过滤机制分析

1.1 基础XSS尝试失败

  • 初始尝试使用标准<script>alert(1)</script>标签
  • 发现<script>标签被完全移除
  • 表明系统有基本的标签过滤机制

1.2 大小写绕过尝试

  • 尝试使用大小写变体<scriPt>标签
  • 仍然被过滤移除
  • 说明过滤系统采用大小写不敏感的匹配方式

2. 进一步测试与过滤规则分析

2.1 测试HTML注入点

  • 使用233">alert(233)进行测试
  • 发现alert字符可以正常显示
  • 但圆括号()被HTML实体编码
  • 表明系统有针对特定字符的编码机制

2.2 替代标签尝试

  • 尝试使用``标签及其src属性
  • 发现src属性被过滤
  • 说明系统有针对常见XSS属性的过滤

3. 高级绕过技术

3.1 SVG标签利用

  • 尝试使用<svg>标签及其onload属性
  • 发现/onload=被替换为空
  • 表明系统有针对事件处理属性的过滤

3.2 等号(=)绕过技术

  • 尝试对=进行URL编码
    • 单次编码:失败
    • 二次编码:仍然被过滤
    • 三次编码:成功绕过(%25%32%35%25%33%33%25%36%34)

4. 最终有效载荷构造

4.1 绕过括号限制

  • 由于()被实体编码,采用两种解决方案:
    1. 利用SVG标签内可执行实体字符的特性
    2. 使用反引号`代替括号:alert233``

4.2 成功利用的Payload

233"><svg/onload%25%32%35%25%33%33%25%36%34alert(233)>

233"><svg/onload%25%32%35%25%33%33%25%36%34alert`233`>

5. 关键知识点总结

  1. 多层编码绕过:某些WAF/过滤器只解码一次或两次URL编码,三次编码可能绕过
  2. 替代标签选择:当<script>和``被过滤时,<svg>可能成为可行选择
  3. 事件处理属性onload等属性在特定标签中仍可执行JS
  4. 字符替换技术:当特定符号被过滤时,可使用:
    • 反引号代替括号
    • 实体编码在允许的上下文中仍可执行
  5. 过滤规则分析:通过逐步测试了解过滤器的具体规则和行为模式

6. 防御建议

  1. 实施多层次的输入过滤和输出编码
  2. 使用内容安全策略(CSP)限制脚本执行
  3. 对用户输入进行规范化处理后再过滤
  4. 考虑使用专业的WAF解决方案
  5. 定期更新过滤规则以应对新型绕过技术
XSS绕过技术实战分析:从过滤绕过到成功利用 1. 初始测试与基本过滤机制分析 1.1 基础XSS尝试失败 初始尝试使用标准 <script>alert(1)</script> 标签 发现 <script> 标签被完全移除 表明系统有基本的标签过滤机制 1.2 大小写绕过尝试 尝试使用大小写变体 <scriPt> 标签 仍然被过滤移除 说明过滤系统采用大小写不敏感的匹配方式 2. 进一步测试与过滤规则分析 2.1 测试HTML注入点 使用 233">alert(233) 进行测试 发现 alert 字符可以正常显示 但圆括号 () 被HTML实体编码 表明系统有针对特定字符的编码机制 2.2 替代标签尝试 尝试使用 ``标签及其 src 属性 发现 src 属性被过滤 说明系统有针对常见XSS属性的过滤 3. 高级绕过技术 3.1 SVG标签利用 尝试使用 <svg> 标签及其 onload 属性 发现 /onload= 被替换为空 表明系统有针对事件处理属性的过滤 3.2 等号(=)绕过技术 尝试对 = 进行URL编码 单次编码:失败 二次编码:仍然被过滤 三次编码 :成功绕过( %25%32%35%25%33%33%25%36%34 ) 4. 最终有效载荷构造 4.1 绕过括号限制 由于 () 被实体编码,采用两种解决方案: 利用SVG标签内可执行实体字符的特性 使用反引号 ` 代替括号: alert 233 `` 4.2 成功利用的Payload 或 5. 关键知识点总结 多层编码绕过 :某些WAF/过滤器只解码一次或两次URL编码,三次编码可能绕过 替代标签选择 :当 <script> 和 ``被过滤时, <svg> 可能成为可行选择 事件处理属性 : onload 等属性在特定标签中仍可执行JS 字符替换技术 :当特定符号被过滤时,可使用: 反引号代替括号 实体编码在允许的上下文中仍可执行 过滤规则分析 :通过逐步测试了解过滤器的具体规则和行为模式 6. 防御建议 实施多层次的输入过滤和输出编码 使用内容安全策略(CSP)限制脚本执行 对用户输入进行规范化处理后再过滤 考虑使用专业的WAF解决方案 定期更新过滤规则以应对新型绕过技术