WEB漏洞-XSS
字数 1565 2025-08-11 11:39:36
XSS漏洞全面解析与防御指南
1. XSS概述
XSS(Cross-Site Scripting)跨站脚本攻击是指攻击者通过利用网页开发时留下的漏洞,向网页注入恶意脚本代码,当用户浏览该网页时,恶意代码会被执行,从而达到攻击目的。
1.1 攻击原理
- 程序对输入和输出的控制不够严格
- 恶意代码被当作有效代码解析执行
- 攻击通常利用JavaScript,但也可能使用Java、VBScript、ActiveX、Flash或普通HTML
1.2 主要危害
- 网络钓鱼,盗取用户账户
- 窃取用户cookies和隐私信息
- 弹出广告页面获取利益
- 劫持用户会话执行任意操作
- 传播蠕虫病毒
2. XSS分类与攻击方式
2.1 反射型XSS(非持久型)
- 特点:恶意代码存在于URL中,需要用户点击特制链接
- 攻击流程:
- 攻击者构造包含恶意代码的URL
- 诱使用户点击该URL
- 服务器返回包含恶意代码的页面
- 用户浏览器执行恶意代码
- 常见攻击位置:用户登录入口、网站搜索框等
2.2 存储型XSS(持久型)
- 特点:恶意代码被永久存储在服务器上,所有访问用户都会受影响
- 攻击流程:
- 攻击者通过表单将恶意代码提交到网站数据库
- 受害者请求包含恶意代码的页面
- 服务器返回包含恶意代码的响应
- 受害者浏览器执行恶意代码,发送cookies给攻击者
- 常见攻击位置:论坛、博客、留言板、评论区等交互区域
2.3 DOM型XSS
- 特点:不涉及服务器交互,完全在客户端处理
- 攻击流程:
- 攻击者构造包含恶意代码的URL
- 诱使受害者访问该URL
- 合法脚本执行导致恶意代码被插入页面
- 受害者浏览器执行恶意代码
- 常见攻击位置:基于DOM操作的前端代码
3. XSS常用攻击标签与示例
3.1 <script>标签
<script>alert("xss");</script>
3.2 ``标签
<!-- 图片加载错误时触发 -->
<!-- 鼠标悬停时触发 -->
<!-- 鼠标移出时触发 -->
3.3 <a>标签
<a href="javascript:alert('1')">test</a>
3.4 <input>标签
<input type="text" onkeydown="alert(1)"> <!-- 按键按下时触发 -->
<input onblur=alert("xss") autofocus><input autofocus> <!-- 竞争焦点触发 -->
3.5 <style>标签
<style οnlοad=alert(1)></style>
4. XSS攻击平台与工具
4.1 蓝莲花XSS平台
- 地址:https://gitee.com/evlon/BlueLotus_XSSReceiver
- 安装:解压至phpstudy的WWW目录,访问https://IP地址/xss/install.php
- 注意:使用第三方平台存在安全风险,建议内部测试时自建平台
4.2 BeEF工具
- 功能:最强大的浏览器开源渗透测试框架
- 特点:基于Ruby编写,支持图形化界面
- 注意:新版Kali Linux不再自带,需手动安装
5. WAF绕过技术
5.1 大小写绕过
<ScRipt>ALeRt("XSS");</sCRipT>
5.2 双写绕过
<input oonnfocus="alert('xss');"> <!-- 过滤on时使用 -->
5.3 空格/回车/TAB绕过
<!-- 空格 -->
<!-- 回车 -->
<!-- TAB -->
5.4 注释绕过
<scri<!--1-->pt>alert()</sc<!--1-->ript>
5.5 字符拼接
<script>top["al"+"ert"](xss);</script>
5.6 编码绕过
- Unicode编码:
- URL编码:
- Base64编码:
5.7 过滤URL绕过
- URL编码:
- IP地址转换:
<!-- 十进制 -->
<!-- 八进制 -->
5.8 引号绕过
<!-- 省略引号 -->
5.9 JavaScript伪协议
<a href="javascript:alert(xss);">xss</a>
<!-- IE7以下有效 -->
6. XSS防御措施
6.1 内容过滤
- 白名单过滤:只允许特定安全内容通过
- 黑名单过滤:拦截已知危险关键字(可能被绕过)
6.2 输出编码
- 对所有动态输出到页面的内容进行HTML编码
- 将特殊字符转换为HTML实体
6.3 HTTP Only属性
- 在服务端设置会话cookie的HTTP only属性
- 防止客户端JavaScript获取cookie信息
6.4 输入验证
- 明确输入内容类型(电话、邮箱等)
- 对不符合格式的内容进行过滤
6.5 输入长度控制
- 对不可信内容设置合理长度限制
- 增加XSS攻击实现的难度
6.6 其他安全措施
- 添加验证码
- 开启防护软件/WAF
- 定期安全审计
7. 高风险区域
- 评论区、留言区
- 个人信息修改
- 订单信息
- 站内信、私信
- 搜索框、URL参数
通过全面了解XSS攻击原理、常见攻击方式和防御措施,开发人员可以更好地保护网站安全,防止XSS漏洞被利用。