You need to enable JavaScript to run this app. 注入的JS代码被服务器转为全大写时,如何利用XSS生成有效alert PoC?
优惠活动
大模型
产品
解决方案
定价
更多

注入的JS代码被服务器转为全大写时,如何利用XSS生成有效alert PoC?

解决方案

不需要额外开发“渲染前自动转小写”的绕过逻辑,针对服务端强制把响应文本转全大写的场景,最直接有效的方式是借助HTML实体编码,利用浏览器原生解析流程生成符合大小写要求的可执行JS代码。

核心原理:服务端的全大写转换只会修改字符串中的英文字母(小写转大写),对纯数字、特殊符号组成的HTML实体没有任何影响;浏览器解析页面时,会自动对script标签内部、HTML事件属性内部的内容做HTML实体解码,解码完成后才会把代码交给JS引擎执行,整个过程无需额外脚本介入。

可直接复用的PoC

只需要把要执行的JS代码中所有的小写英文字符,替换成对应的十进制HTML实体,再提交注入即可。比如要执行alert(document.cookie),不需要直接书写小写字母,拼接后的注入内容为:

<script>&#97;&#108;&#101;&#114;&#116;(&#100;&#111;&#99;&#117;&#109;&#101;&#110;&#116;.&#99;&#111;&#111;&#107;&#105;&#101;)</script>

这段注入内容里没有任何小写英文字母,服务端的大写转换逻辑不会对其做任何修改,会原封不动输出到响应中;浏览器解析时会自动把所有实体解码为对应的小写字符,最终script标签内生成的可执行代码就是标准的alert(document.cookie),可正常触发弹窗。

其他场景的备选思路

  • 如果服务端逻辑是先把用户输入的HTML实体解码、再做全大写转换、最后输出,可以换用HTML事件的注入向量:比如构造<IMG SRC=# ONERROR=&#97;&#108;&#101;&#114;&#116;(1)> 形式的内容,利用浏览器对属性值的原生解析完成实体解码,不受服务端处理顺序的影响。
  • 完全使用大写字符、数字、符号构造注入内容,顺着JS原型链定位到全局Function构造器,动态生成需要执行的代码字符串:全程不需要书写小写关键字,即使服务端把所有内容转全大写,也不会破坏代码的执行逻辑。

测试注意事项:优先确认服务端的大写转换范围,避免把需要保留的大写字符误转成实体,导致PoC失效。

内容的提问来源于stack exchange,提问作者Mr.Laf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.11 17:36:03