Nyabayo/web-application-security-python-xss-vulnerability-scanner-reflected-xss-detection-owasp-a03
GitHub: Nyabayo/web-application-security-python-xss-vulnerability-scanner-reflected-xss-detection-owasp-a03
一个面向教学的 Python 反射型 XSS 漏洞扫描器,通过自动提交 payload 并检测响应中的输入反射来验证 Web 端点是否存在注入风险。
Stars: 0 | Forks: 0
# 🔐 Web 应用安全第 1 部分 — 反射型 XSS 漏洞扫描器
[](https://www.python.org/)
[](https://owasp.org/Top10/A03_2021-Injection/)
[](https://flask.palletsprojects.com/)
[](LICENSE)
[](https://github.com/Nyabayo/web-application-security-part1-python-xss-vulnerability-scanner-reflected-xss-detection-owasp-a03-orion-health-systems-lab)
## 📖 目录
- [关于项目](#-about-the-project)
- [背景场景](#-scenario)
- [功能特性](#-features)
- [OWASP A03:2021 覆盖范围](#-owasp-a032021-coverage)
- [前置条件](#-prerequisites)
- [安装说明](#-installation)
- [用法](#-usage)
- [脚本结构](#-script-structure)
- [函数参考](#-functions-reference)
- [示例输出](#-sample-output)
- [实验任务分解](#-lab-tasks-breakdown)
- [评分标准](#-grading-rubric)
- [安全注意事项](#-security-considerations)
- [贡献](#-contributing)
- [许可证](#-license)
## 📌 关于项目
本代码库包含一个专注于 **Web 应用安全** 的网络安全实验练习,具体针对 **反射型跨站脚本攻击 (XSS)** 漏洞的自动化检测。该项目演示了如何使用 **Python** 和 **requests** 库以编程方式测试 Web 端点的 XSS 注入风险。
该脚本是涵盖 **OWASP A03:2021 — 注入** 的结构化网络安全课程的一部分,模拟了现实世界中的应用安全专业人员如何在渗透测试开始之前使用自动化工具作为第一道防线。
**代码库:**
```
https://github.com/Nyabayo/web-application-security-part1-python-xss-vulnerability-scanner-reflected-xss-detection-owasp-a03-orion-health-systems-lab.git
```
## 🏢 背景场景
你是 **Orion Health Systems** 的一名 **初级应用安全分析师**,该公司最近推出了一项基于 Web 的搜索门户,供患者访问健康信息。
在一次例行内部审计中,你的团队发现某些搜索端点可能容易受到 **反射型跨站脚本攻击 (XSS)** 的攻击,该问题可能允许攻击者在用户的浏览器中执行恶意脚本。
| 风险 | 描述 |
|---|---|
| **反射型 XSS** | 用户提供的输入在未经净化的情况下在 HTTP 响应中被回显 |
| **影响** | 攻击者可以在受害者的浏览器中执行脚本、窃取会话 token、重定向用户 |
| **OWASP 类别** | A03:2021 — 注入 (CWE-79) |
| **受影响的端点** | `/search?q=` — 将查询参数直接反射到 HTML 中 |
## ✨ 功能特性
- ✅ **自动化 XSS Payload 提交** — 向存在漏洞的端点提交多个 XSS 测试 payload
- ✅ **反射输入检测** — 检查每个 payload 是否出现在 HTTP 响应体中
- ✅ **清晰的结果报告** — 清楚地输出每次测试结果是存在漏洞还是安全
- ✅ **防止误报** — 仅标记在响应中被按字面反射的 payload
- ✅ **优雅的错误处理** — 处理连接错误、超时和意外的状态码
- ✅ **动态循环** — 动态测试所有 payload,没有硬编码逻辑
- ✅ **符合 PEP 8** — 遵循由 Flake8 验证的 Python 代码风格标准
## 🛡️ OWASP A03:2021 覆盖范围
此工具直接解决了 **OWASP A03:2021 — 注入** 问题,特别是 **CWE-79: 跨站脚本攻击**。
| OWASP 关注点 | 此工具如何解决 |
|---|---|
| **反射型 XSS (CWE-79)** | 测试用户提供的输入是否在 HTTP 响应中未经编码地被回显 |
| **输入验证** | 揭示未能对用户输入进行净化或编码的端点 |
| **输出编码** | 检测服务器响应中缺失的输出编码 |
### 如何防止反射型 XSS
| 发现 | 重要性 | 安全编码修复方案 |
|---|---|---|
| Payload 在 HTML 中被反射 | 存在脚本注入风险 | 净化用户输入,对输出进行编码 |
| 未反射任何 payload | 页面在此攻击向量上可能是安全的 | 验证输入和输出作为最佳实践 |
## ✅ 前置条件
在运行此脚本之前,请确保已安装以下内容:
### 系统要求
- **Python 3.x** — [在此下载](https://www.python.org/downloads/)
- **pip** — Python 包管理器
- **Flask** — 用于运行测试 Web 应用
- **requests** — Python HTTP 库
### 安装依赖
```
pip install flask requests
```
### 虚拟环境 (推荐)
```
# 创建 virtual environment
python3 -m venv .venv
# 激活 — macOS/Linux
source .venv/bin/activate
# 激活 — Windows PowerShell
.venv\Scripts\Activate.ps1
```
## 💾 安装说明
### 克隆代码库
```
git clone https://github.com/Nyabayo/web-application-security-part1-python-xss-vulnerability-scanner-reflected-xss-detection-owasp-a03-orion-health-systems-lab.git
```
### 进入项目目录
```
cd web-application-security-part1-python-xss-vulnerability-scanner-reflected-xss-detection-owasp-a03-orion-health-systems-lab
```
## 🚀 用法
### 第 1 步 — 启动存在漏洞的测试应用
`app.py` 文件模拟了一个存在漏洞的 Flask Web 应用,带有一个会反射用户输入的搜索端点:
```
python3 app.py
```
你应该会看到:
```
* Running on http://127.0.0.1:5000
```
### 第 2 步 — 运行扫描器
打开一个 **新的终端标签页**,激活你的虚拟环境,然后运行:
```
python3 vuln_scanner.py
```
### 预期输出
```
[+] Starting reflected XSS test...
[!] Potential XSS vulnerability detected with payload:
[!] Potential XSS vulnerability detected with payload:
[!] Potential XSS vulnerability detected with payload:
标签:CISA项目, Flask, HTTP请求, Linux取证, Orion Health Systems, OWASP A03:2021, OWASP Top 10, Python, Web安全, XSS检测, 加密, 反射型XSS, 安全实验室, 无后门, 注入漏洞, 漏洞扫描器, 网络安全, 蓝队分析, 跨站脚本攻击, 隐私保护