BitHarsh18/ShadowXSS
GitHub: BitHarsh18/ShadowXSS
一款基于 Python 的模块化 XSS 漏洞扫描器,通过自动化爬取、payload 注入和响应分析来检测 Web 应用中的反射型跨站脚本漏洞。
Stars: 0 | Forks: 0
# ShadowXSS - 基于 Python 的 XSS 漏洞扫描器
## 概述
ShadowXSS 是一款基于 Python 的模块化跨站脚本攻击 (XSS) 漏洞扫描器,旨在自动化发现 Web 应用程序中的反射型 XSS 漏洞。
该项目从零开始构建,旨在通过实现爬取、表单提取、payload 注入、URL 参数测试、漏洞检测和报告生成,来理解现实世界中的 Web 漏洞扫描器是如何工作的。
ShadowXSS 专注于通过使用多种 XSS payload 对 Web 表单和 URL 参数进行自动化测试,来检测反射型 XSS 漏洞。
## 为什么开发这个项目
现代 Web 应用程序经常受到输入验证和输出编码问题的困扰,这些问题可能导致跨站脚本攻击 (XSS) 漏洞。
该项目的目标是:
* 学习进攻性 Web 安全概念
* 理解自动化扫描器的工作原理
* 获得 HTTP 请求和 Web 爬取的实践经验
* 构建一个与 SOC 分析师和安全分析师角色相关的网络安全项目
* 开发一款模块化且可扩展的安全工具
HTML 漏洞报告
### CLI 命令执行
### JSON 报告生成
## 功能
### Web 爬取
* 自动发现内部链接
* 爬取目标页面
* 识别攻击面
### 表单发现
* 检测 HTML 表单
* 提取:
* Form action
* Form method
* Input fields
### Payload 注入
支持:
* GET 请求
* POST 请求
自动将 XSS payload 注入到发现的输入项中。
### URL 参数测试
测试查询字符串参数,例如:
```
/profile?name=test
```
Payload 会自动插入到参数中并进行测试。
### 多 Payload 引擎
目前支持 20 多种 XSS payload,包括:
* Script Injection
* Event Handler Injection
* SVG Payload
* Image Error Payload
* Iframe Payload
* Autofocus Payload
* Object/Embed Payload
### 反射型 XSS 检测
通过分析服务器响应来检测反射的 payload。
当前检测逻辑:
```
payload in response.text
```
### 报告
生成:
* JSON 报告
* 专业的 HTML 报告
每个发现包含:
* 存在漏洞的 URL
* 使用的 payload
* 请求方法
* 漏洞类型
## 项目架构
```
ShadowXSS
│
├── main.py
│
├── core
│ ├── crawler.py
│ ├── injector.py
│ ├── detector.py
│ ├── url_scanner.py
│ ├── payloads.py
│ ├── reporter.py
│ └── html_reporter.py
│
├── reports
│ ├── report.json
│ └── report.html
│
└── vulnerable_app.py
```
## 模块说明
### crawler.py
负责:
* 表单提取
* 链接发现
* 表单元数据提取
函数:
* get_forms()
* get_form_details()
* get_links()
### injector.py
负责:
* Payload 插入
* GET 请求
* POST 请求
函数:
* submit_form()
### detector.py
负责:
* 反射型 payload 检测
函数:
* is_vulnerable()
### url_scanner.py
负责:
* URL 参数测试
使用的概念:
* urlparse()
* parse_qs()
* urlencode()
* urlunparse()
### payloads.py
存储测试期间使用的所有 XSS payload。
当前 payload 数量:
20+
### reporter.py
负责:
* 存储发现结果
* 导出 JSON
输出:
```
{
"url": "...",
"payload": "...",
"method": "...",
"type": "Reflected XSS"
}
```
### html_reporter.py
负责:
* 暗色主题的 HTML 报告
* 易读的漏洞摘要
## 检测工作流程
```
Target URL
│
▼
Web Crawling
│
▼
Link Discovery
│
▼
Form Discovery
│
▼
Payload Injection
│
▼
Response Analysis
│
▼
XSS Detection
│
▼
Report Generation
```
## 扫描示例
```
python3 main.py
```
```
ENTER TARGET URL:
http://127.0.0.1:5000
```
扫描器:
* 爬取网站
* 提取表单
* 测试 URL 参数
* 注入 20 多种 payload
* 检测反射型 XSS
* 生成报告
## 漏洞测试实验室
为了进行测试,构建了一个自定义的含有漏洞的 Flask 应用程序。
包含的漏洞页面:
### 搜索页面
通过查询参数引发的反射型 XSS。
```
/search?q=test
```
### 登录页面
通过 POST 参数引发的反射型 XSS。
```
/login
```
### 个人资料页面
通过 URL 参数引发的反射型 XSS。
```
/profile?name=test
```
### 联系页面
为未来的 textarea 测试而构建。
## 使用的技术
* Python
* Requests
* BeautifulSoup
* Flask
* HTML
* CSS
* JSON
## 展现的技能
### 网络安全
* Web 应用程序安全
* 跨站脚本攻击 (XSS)
* 漏洞评估
* 安全测试
### 编程
* Python
* 模块化架构
* 面向对象编程
* HTTP 请求
### 安全工具开发
* 爬虫引擎
* Payload 管理
* 检测逻辑
* 报告系统
## 当前功能
### 已实现
* Web 爬取
* 表单发现
* 链接发现
* GET 表单测试
* POST 表单测试
* URL 参数测试
* 20+ Payload 测试
* 反射型 XSS 检测
* JSON 报告
* HTML 报告
* 模块化设计
## 当前局限性
当前版本可检测:
* 反射型 Payload
当前版本尚未验证:
* 实际的 JavaScript 执行
* 浏览器执行上下文
* DOM 型 XSS
扫描器目前通过检查 payload 是否在响应中被反射,来识别反射型 XSS 候选对象。
## 未来路线图
### 阶段 1
* 完善会话支持
* Textarea 检测
* Select 字段检测
### 阶段 2
* 身份验证支持
* 登录自动化
* Cookie 持久化
### 阶段 3
* 外部 Payload 文件
示例:
```
payloads/
├── basic.txt
├── advanced.txt
├── waf_bypass.txt
```
### 阶段 4
* 50+ Payload 库
### 阶段 5
* 存储型 XSS 检测
### 阶段 6
* DOM 型 XSS 检测
### 阶段 7
* 多线程扫描
### 阶段 8
* 自定义 Header 支持
### 阶段 9
* 命令行参数
示例:
```
python3 shadowxss.py \
--url http://target.com \
--output report.html
```
### 阶段 10
* Playwright 集成
* Selenium 集成
* 基于真实浏览器的 XSS 验证
## 免责声明
本项目专为教育目的和授权的安全测试环境而开发。
未经明确许可,请勿将此工具用于任何系统。
## 作者
Harshit Kumar Srivastava
网络安全爱好者 | 安全分析师候选人 | Python 开发者
### CLI 命令执行
### JSON 报告生成
## 功能
### Web 爬取
* 自动发现内部链接
* 爬取目标页面
* 识别攻击面
### 表单发现
* 检测 HTML 表单
* 提取:
* Form action
* Form method
* Input fields
### Payload 注入
支持:
* GET 请求
* POST 请求
自动将 XSS payload 注入到发现的输入项中。
### URL 参数测试
测试查询字符串参数,例如:
```
/profile?name=test
```
Payload 会自动插入到参数中并进行测试。
### 多 Payload 引擎
目前支持 20 多种 XSS payload,包括:
* Script Injection
* Event Handler Injection
* SVG Payload
* Image Error Payload
* Iframe Payload
* Autofocus Payload
* Object/Embed Payload
### 反射型 XSS 检测
通过分析服务器响应来检测反射的 payload。
当前检测逻辑:
```
payload in response.text
```
### 报告
生成:
* JSON 报告
* 专业的 HTML 报告
每个发现包含:
* 存在漏洞的 URL
* 使用的 payload
* 请求方法
* 漏洞类型
## 项目架构
```
ShadowXSS
│
├── main.py
│
├── core
│ ├── crawler.py
│ ├── injector.py
│ ├── detector.py
│ ├── url_scanner.py
│ ├── payloads.py
│ ├── reporter.py
│ └── html_reporter.py
│
├── reports
│ ├── report.json
│ └── report.html
│
└── vulnerable_app.py
```
## 模块说明
### crawler.py
负责:
* 表单提取
* 链接发现
* 表单元数据提取
函数:
* get_forms()
* get_form_details()
* get_links()
### injector.py
负责:
* Payload 插入
* GET 请求
* POST 请求
函数:
* submit_form()
### detector.py
负责:
* 反射型 payload 检测
函数:
* is_vulnerable()
### url_scanner.py
负责:
* URL 参数测试
使用的概念:
* urlparse()
* parse_qs()
* urlencode()
* urlunparse()
### payloads.py
存储测试期间使用的所有 XSS payload。
当前 payload 数量:
20+
### reporter.py
负责:
* 存储发现结果
* 导出 JSON
输出:
```
{
"url": "...",
"payload": "...",
"method": "...",
"type": "Reflected XSS"
}
```
### html_reporter.py
负责:
* 暗色主题的 HTML 报告
* 易读的漏洞摘要
## 检测工作流程
```
Target URL
│
▼
Web Crawling
│
▼
Link Discovery
│
▼
Form Discovery
│
▼
Payload Injection
│
▼
Response Analysis
│
▼
XSS Detection
│
▼
Report Generation
```
## 扫描示例
```
python3 main.py
```
```
ENTER TARGET URL:
http://127.0.0.1:5000
```
扫描器:
* 爬取网站
* 提取表单
* 测试 URL 参数
* 注入 20 多种 payload
* 检测反射型 XSS
* 生成报告
## 漏洞测试实验室
为了进行测试,构建了一个自定义的含有漏洞的 Flask 应用程序。
包含的漏洞页面:
### 搜索页面
通过查询参数引发的反射型 XSS。
```
/search?q=test
```
### 登录页面
通过 POST 参数引发的反射型 XSS。
```
/login
```
### 个人资料页面
通过 URL 参数引发的反射型 XSS。
```
/profile?name=test
```
### 联系页面
为未来的 textarea 测试而构建。
## 使用的技术
* Python
* Requests
* BeautifulSoup
* Flask
* HTML
* CSS
* JSON
## 展现的技能
### 网络安全
* Web 应用程序安全
* 跨站脚本攻击 (XSS)
* 漏洞评估
* 安全测试
### 编程
* Python
* 模块化架构
* 面向对象编程
* HTTP 请求
### 安全工具开发
* 爬虫引擎
* Payload 管理
* 检测逻辑
* 报告系统
## 当前功能
### 已实现
* Web 爬取
* 表单发现
* 链接发现
* GET 表单测试
* POST 表单测试
* URL 参数测试
* 20+ Payload 测试
* 反射型 XSS 检测
* JSON 报告
* HTML 报告
* 模块化设计
## 当前局限性
当前版本可检测:
* 反射型 Payload
当前版本尚未验证:
* 实际的 JavaScript 执行
* 浏览器执行上下文
* DOM 型 XSS
扫描器目前通过检查 payload 是否在响应中被反射,来识别反射型 XSS 候选对象。
## 未来路线图
### 阶段 1
* 完善会话支持
* Textarea 检测
* Select 字段检测
### 阶段 2
* 身份验证支持
* 登录自动化
* Cookie 持久化
### 阶段 3
* 外部 Payload 文件
示例:
```
payloads/
├── basic.txt
├── advanced.txt
├── waf_bypass.txt
```
### 阶段 4
* 50+ Payload 库
### 阶段 5
* 存储型 XSS 检测
### 阶段 6
* DOM 型 XSS 检测
### 阶段 7
* 多线程扫描
### 阶段 8
* 自定义 Header 支持
### 阶段 9
* 命令行参数
示例:
```
python3 shadowxss.py \
--url http://target.com \
--output report.html
```
### 阶段 10
* Playwright 集成
* Selenium 集成
* 基于真实浏览器的 XSS 验证
## 免责声明
本项目专为教育目的和授权的安全测试环境而开发。
未经明确许可,请勿将此工具用于任何系统。
## 作者
Harshit Kumar Srivastava
网络安全爱好者 | 安全分析师候选人 | Python 开发者标签:CISA项目, Homebrew安装, Python, Selenium, Splunk, Web安全, XSS检测, 加密, 后端开发, 多模态安全, 字符串匹配, 无后门, 漏洞扫描器, 网络信息收集, 蓝队分析, 逆向工具