JumanALH/web-vulnerability-scanner
GitHub: JumanALH/web-vulnerability-scanner
一个用 Python 编写的教育性 Web 漏洞扫描器,能够检测 URL 参数中的 SQL 注入、反射型 XSS 漏洞以及缺失的 HTTP 安全标头。
Stars: 0 | Forks: 0
# Web 漏洞扫描器
一个对初学者友好的 Python 工具,用于扫描网站的常见安全漏洞。该项目旨在作为教育用途,帮助理解 Web 攻击的原理及其检测方式。
## 功能
| 扫描类型 | 描述 |
|-----------|-------------|
| **SQL Injection** | 使用常见的 SQL payload 测试 URL 参数,并检查响应中是否存在数据库错误信息 |
| **Reflected XSS** | 向 URL 参数注入类脚本 payload,并检查其是否未经转义地回显在响应中 |
| **Security Headers** | 检查 7 个关键的 HTTP 安全标头,并报告缺失的项及其风险说明 |
## 安装
```
# Clone 仓库
git clone https://github.com/JumanALH/web-vulnerability-scanner.git
cd web-vulnerability-scanner
# (可选)创建虚拟环境
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
```
## 使用方法
```
python main.py
```
系统将提示您输入目标 URL:
```
Enter target URL (e.g., http://example.com/page?id=1): http://testphp.vulnweb.com/artists.php?artist=1
```
扫描器将测试 SQL 注入、XSS 以及缺失的安全标头,随后显示包含风险评估的摘要。
### 输出示例
```
============================================================
SCAN SUMMARY
============================================================
SQL Injection vulnerabilities found: 2
Reflected XSS vulnerabilities found: 0
Missing security headers: 5
Security headers present: 2
--- Risk Assessment ---
[!!] HIGH RISK — Active vulnerabilities detected!
The target may be exploitable. Remediation is critical.
```
## 各项扫描原理
### SQL Injection 检测
1. 解析 URL 以提取查询参数
2. 将每个参数替换为 SQL payload(例如:`' OR '1'='1`)
3. 向服务器发送修改后的请求
4. 在响应中搜索数据库错误特征(MySQL、PostgreSQL、SQL Server、SQLite)
### Reflected XSS 检测
1. 解析 URL 以提取查询参数
2. 注入类脚本 payload(例如:``)
3. 检查 payload 是否**未经转义**地出现在响应 HTML 中
4. 如果原样回显,说明应用程序未对输入进行清理
### Security Headers 检查
1. 发送 GET 请求并读取响应标头
2. 检查 7 个重要的安全标头:
- `X-Frame-Options` — 防止点击劫持
- `X-Content-Type-Options` — 防止 MIME 嗅探
- `Content-Security-Policy` — 控制资源加载
- `Strict-Transport-Security` — 强制使用 HTTPS
- `X-XSS-Protection` — 旧版 XSS 过滤器
- `Referrer-Policy` — 控制 Referer 泄露
- `Permissions-Policy` — 限制浏览器功能
## 法律免责声明
**本工具仅供教育和授权安全测试使用。**
- 仅扫描您**拥有**或拥有**明确书面授权**测试的网站
- 未经授权的扫描可能违反法律,例如《计算机欺诈与滥用法》(CFAA)
- 作者不对本工具的任何滥用行为负责
- 为了安全实践,请使用故意存在漏洞的应用程序,例如 [DVWA](https://github.com/digininja/DVWA) 或 [Acunetix test site](http://testphp.vulnweb.com/)
## 我的收获
- SQL 注入如何利用未清理的数据库查询
- Reflected XSS 如何通过 URL 参数注入脚本
- 为什么 HTTP 安全标头很重要,以及每个标头的防护作用
- 如何使用模块化、可复用的代码构建 Python 项目
- 如何在 Python 中使用 `requests` 库和 URL 解析
## 技术栈
- **Python 3**
- **Requests** — 用于发送请求的 HTTP 库
- **urllib.parse** — 内置的 URL 解析工具
标签:CISA项目, DOE合作, EDR, HTTP安全, Python, SQL注入检测, Web安全, XSS检测, 代码生成, 反取证, 反射型XSS, 字符串匹配, 安全头审计, 安全评估, 教育工具, 无后门, 渗透测试工具, 网络安全, 脆弱性评估, 蓝队分析, 隐私保护