XSS 渗透测试必备工具!XSStrike 实战演示!

💡 想测试网站是否存在 XSS 漏洞?想要一款强大的自动化工具?今天和大家整理分享一下最近使用到 XSS 漏洞排查工具(XSStrike)笔记,带你玩转 XSStrike!

XSS(跨站脚本攻击)一直是 Web 安全领域最常见的漏洞之一,而 XSStrike 作为一款智能化 XSS 测试工具,能够自动分析参数、绕过 WAF 规则,并生成高效的 XSS payload。

本篇文章将带你详细了解 XSStrike 的安装方法、实战用法,让你快速上手这款 XSS 渗透利器!👨‍💻

什么是 XSS ?

XSS(跨站脚本攻击)是一种常见的前端安全漏洞,攻击者可以通过注入恶意脚本来窃取用户信息、劫持会话甚至篡改网页内容。对于 Web 开发者来说,理解 XSS 的攻击方式和防御手段至关重要。

XSS 跨站攻击原理

XSS 的本质是 攻击者在网页中注入恶意脚本(JavaScript),并让受害者的浏览器执行该脚本,从而窃取敏感信息、劫持用户会话、伪造请求等。

攻击流程:

  1. 注入恶意代码:攻击者通过输入框、URL参数、评论区等可交互的地方,提交一段恶意 JavaScript 代码。
  2. 存储/反射到页面:服务器或前端未对输入进行适当过滤,导致这段代码被存储或直接在页面中输出。
  3. 用户访问触发执行:当受害者访问被污染的页面时,恶意 JavaScript 在用户浏览器中执行,获取 Cookie、LocalStorage 数据,甚至发送请求到攻击者的服务器。

常见类型:

  1. 存储型 XSS:恶意代码存入数据库,影响所有访问该页面的用户。
  2. 反射型 XSS:恶意代码通过 URL 传递,仅影响点击该链接的用户。
  3. DOM 型 XSS:前端 JavaScript 代码解析用户输入时动态执行恶意脚本。

防御手段:

  • 输入校验:对用户输入进行严格过滤,禁止特殊字符。
  • 输出编码:对 HTML、JavaScript、URL 进行转义,防止代码执行。
  • 使用 CSP(内容安全策略):限制页面可执行的脚本来源。
  • HttpOnly Cookie:防止 JavaScript 直接访问 Cookie。

通过这些防御措施,可以有效降低 XSS 攻击的风险。

XSStrike 简介

XSStrike 是一个跨站脚本检测套件,配备了四个手写解析器、一个智能负载生成器、一个强大的模糊引擎和一个速度极快的爬虫。

XSStrike 不像所有其他工具那样注入有效负载并检查其工作情况,而是使用多个解析器分析响应,然后通过与模糊引擎集成的上下文分析来制作保证工作的有效负载。以下是 XSStrike 生成的有效负载参数的效果示例,可以看到已经嵌入一块弹窗逻辑。

%3ChTml/+/onMoUseover%0d=%0d[8].find(confirm)//

在这里插入图片描述

除此之外,XSStrike还具有爬行、模糊测试、参数发现、WAF检测功能。它还扫描 DOM XSS 漏洞。

XSStrike 文档

源码位置:https://github.com/s0md3v/XSStrike
使用文档:https://github.com/s0md3v/XSStrike/wiki/Usage

XSStrike 下载 & 安装

1、安装 python3 环境

(1)Python3 下载

下载地址:https://www.python.org/downloads/release/python-3114/ 选择 Windows installer (64-bit) 下载安装。

(2)Python3 安装

安装时选安装界面下方【添加到环境变量】,建议自定义安装,勾选全选安装。

(3)Windows命令行直接执行 python -V 检查是否安装成功(出现版本号则成功)

2、XSStrike 下载

下载地址:https://github.com/s0md3v/XSStrike
img

3、XSStrike 直接解压

在这里插入图片描述

4、Windows 文件路径命令行可键入 cmd 回车直接进入终端命令行

在这里插入图片描述

5、测试产生攻击效果时发现还有依赖没有装完全

注:提示 fuzzywuzzy 没有安装则 pip 单独安装(如果提示自动安装则忽略)。

在这里插入图片描述
执行以下命令安装 fuzzywuzzy

pip install fuzzywuzzy

6、环境已经准备完全

测试一个在线的 xss 靶场网站(http://test.ctf8.com/level1.php?name=test),http 请求参数 name 字段有机会可以进行拼凑攻击。

命令行执行测试

python xsstrike.py -u "http://test.ctf8.com/level1.php?name=test"

执行结果:

在这里插入图片描述

在这里插入图片描述

可以发现已经把渗透的结果测试出来,并且还分析出潜在的攻击代码,我们可以拿着这个载荷(payload)到靶场网站进行 xss 攻击查看效果。

替换 http 请求中的 request 参数,使用分析出来的结果值进行请求,验证 XSStrike 工具发现可嵌入了 xss 攻击脚本。

http://test.ctf8.com/level1.php?name=<a%0donmouSEoVEr%0d=%0d(confirm)()>v3dm0s

让我们直接访问看看效果,发现已经构成攻击,一直循环点击,无法结束弹窗。

在这里插入图片描述
如果是需要请求测试一些需要登录的网站,需要设置请求头。

python xsstrike.py -u http://example.com/page.php?q=query --headers "Accept-Language: en-US\nCookie: null"

XSStrike 参数

usage: xsstrike.py [-h] [-u TARGET] [--data DATA] [-t THREADS] [--seeds SEEDS] [--json] [--path]
                   [--fuzzer] [--update] [--timeout] [--params] [--crawl] [--blind]
                   [--skip-dom] [--headers] [--proxy] [-d DELAY] [-e ENCODING]

optional arguments:
  -h, --help            show this help message and exit
  -u, --url             target url
  --data                post data
  -f, --file            load payloads from a file
  -t, --threads         number of threads
  -l, --level           level of crawling
  -t, --encode          payload encoding
  --json                treat post data as json
  --path                inject payloads in the path
  --seeds               load urls from a file as seeds
  --fuzzer              fuzzer
  --update              update
  --timeout             timeout
  --params              find params
  --crawl               crawl
  --proxy               use prox(y|ies)
  --blind               inject blind xss payloads while crawling
  --skip                skip confirmation dialogue and poc
  --skip-dom            skip dom checking
  --headers             add headers
  -d, --delay           delay between requests

扫描单个网址

选项:-u--url

测试使用 GET 方法的单个网页。

python xsstrike.py -u "http://example.com/search.php?q=query"

提供 POST 数据

python xsstrike.py -u "http://example.com/search.php" --data "q=query"

测试 URL 路径组件

选项:--path

想要在 URL 路径中注入有效负载,例如http://example.com/search/<payload>,您可以使用--pathswitch 来做到这一点。

python xsstrike.py -u "http://example.com/search/form/query" --path

将 POST 数据视为 JSON

选项:--json

该开关可用于通过 POST 方法测试 JSON 数据。

python xsstrike.py -u "http://example.com/search.php" --data '{"q":"query"}' --json

提供 HTTP 标头

选项:--headers

\n以下分隔符分隔: python xsstrike.py -u http://example.com/page.php?q=query --headers "Accept-Language: en-US\nCookie: null"


官网文档

详情请查看:https://github.com/s0md3v/XSStrike/wiki/Usage

总结

XSStrike 作为一款 XSS 渗透神器,能 自动发现漏洞、生成最优 payload、绕过 WAF,极大提升 XSS 测试效率。
💬 你有用过 XSStrike 进行 XSS 渗透测试吗?欢迎留言讨论你的经验和想法!

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小台

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值