Madhu1905/Python_Vulnerability_Scanner
GitHub: Madhu1905/Python_Vulnerability_Scanner
一个基于 FastAPI 构建的全能 Web 安全工具包,集恶意软件扫描、网络分析、身份认证和审计日志于一体,解决了安全工具分散部署与自身安全加固的问题。
Stars: 0 | Forks: 0
# 🔐 SecWeb Toolkit
**一个经过强化的全能 Web 安全工具包——包含恶意软件与 URL 扫描、网络分析、隐写术、加密以及现代身份验证——基于 FastAPI 构建。**
[](https://github.com/Madhu1905/Python_Vulnerability_Scanner/actions/workflows/ci.yml)
[](https://www.python.org/)
[](https://fastapi.tiangolo.com/)
[](https://github.com/Madhu1905/Python_Vulnerability_Scanner/actions/workflows/ci.yml)
[](https://github.com/astral-sh/ruff)
[](LICENSE)
## 📖 关于
SecWeb Toolkit 最初是一个初学者的首个项目——一个捆绑了十几个安全实用程序的 Flask 应用。后来它**在 FastAPI 上进行了彻底重构**,采用了现代安全工程实践:没有硬编码的机密信息、强制双重身份验证、审计跟踪、基于角色的访问控制、测试套件以及容器化部署。
当前的应用位于 [`secweb-toolkit/`](secweb-toolkit/) 中。原始的 Flask 版本作为“之前”的参考保留在仓库根目录——请参阅 [安全:之前与之后](#-security-before--after) 了解发生了什么变化及其原因。
## ✨ 功能
### 🧰 核心工具包
| | 工具 | 描述 |
|---|------|-------------|
| 🦠 | **文件扫描** | 使用 ClamAV 检测上传文件中的恶意软件(限制大小/类型) |
| 🌐 | **URL 扫描** | 通过 VirusTotal 检查链接 |
| 🧬 | **哈希声誉** | 在 VirusTotal 上查询文件的 SHA-256(本地进行哈希处理,绝不上传) |
| 📡 | **Nmap** | 仅对*已授权*的目标进行范围内的端口/服务扫描 |
| 🧪 | **PCAP 分析** | 从抓包数据中提取协议 / 端口 / 传输量最大的主机统计信息 |
| 🖼️ | **隐写术** | 在图像中隐藏和提取信息(LSB) |
| 🔒 | **文件加密** | 使用密码短语进行 AES-256-GCM 认证加密 |
| 🔑 | **密码工具** | zxcvbn 强度计 + CSPRNG 生成器 |
### 🛡️ 侦察与检查
| | 工具 | 描述 |
|---|------|-------------|
| 🛡️ | **Header 扫描器** | 评估网站的 HTTP 安全 Header(**SSRF 安全**——拒绝内部主机) |
| 🌐 | **域名侦察** | DNS 记录(dnspython)+ RDAP/WHOIS 注册数据 |
| 🪙 | **JWT 检查器** | 解码并检查 token 的 header/payload;标记 `alg:none` 和过期时间 |
### 🔐 身份验证与账户安全
- **强制 2FA** — 邮件 OTP,可升级为 **TOTP 身份验证应用**(通过二维码注册),并提供一次性 **备用代码**
- **账户锁定** — 多次登录失败后触发 + **常量时间登录**(防止用户枚举)
- **泄露检查** — 新密码会通过 **HaveIBeenPwned** 进行筛查(k-anonymity;仅会有 5 个哈希字符离开服务器)
- **Argon2id** 密码哈希;TOTP 密钥**静态加密**
### 📋 审计与管理
- 包含登录、2FA、密码更改、扫描和管理员操作的**安全审计日志**
- 每位用户专属的**活动页面**以及**管理员仪表板**(RBAC),用于审查用户、解锁账户和管理角色
## 🧱 技术栈
**FastAPI** · **Starlette** · **SQLAlchemy 2.0** · **Pydantic Settings** · **Jinja2** ·
**Argon2 / cryptography** · **pyotp** · **slowapi** · **httpx** · **scapy** · **python-nmap** ·
**Pillow / NumPy** · **pytest** · **Ruff** · **Docker**
## 🚀 快速开始
```
# 1. 进入 app
cd secweb-toolkit
# 2. 创建虚拟环境并安装
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# 3. 配置(复制 template,然后设置强 secret)
cp .env.example .env
python -c "import secrets; print(secrets.token_urlsafe(64))" # paste as SECRET_KEY in .env
# 4. 运行
python run.py # → http://127.0.0.1:8000
```
### 🐳 使用 Docker 运行
```
cd secweb-toolkit
cp .env.example .env # set a strong SECRET_KEY first
docker compose up --build # → http://localhost:8000
```
## 🧪 测试与 lint
```
cd secweb-toolkit
pip install -r requirements-dev.txt
pytest # 27 tests
ruff check . # lint
```
CI 会通过 [GitHub Actions](.github/workflows/ci.yml) 在每次推送和 pull request 时运行这两者。
## 🔒 安全:之前与之后
此次重写修复了原始 Flask 应用中存在的实际漏洞:
| 领域 | 之前 | 现在 |
|------|----------|-----|
| **机密信息** | 源代码中硬编码了 `secret_key`、邮件密码和 API key | 从 `.env` 加载;启动时会拒绝弱密钥 |
| **2FA** | 在 OTP 检查*之前*授予会话 → 可跳过 | 仅在通过第二因素(邮件 OTP 或 TOTP)*之后*授予 |
| **密码** | bcrypt + 弱正则策略 | Argon2id + zxcvbn + HaveIBeenPwned 泄露检查 |
| **暴力破解** | 无保护 | IP 速率限制**和**账户锁定 |
| **注入 / SSRF** | 原始文件名、未经验证的 nmap 目标、服务端 fetch | `secure_filename` + 临时文件、IP/CIDR 白名单、SSRF 防护 |
| **Web 强化** | 无 | CSRF token、严格的 CSP + 安全 Header、签名 cookie |
| **数据层** | 手动 `sqlite3`(连接泄漏) | SQLAlchemy 2.0 ORM(参数化,请求作用域) |
| **服务器** | 在 `0.0.0.0:80` 上开启 `debug=True`(RCE + root) | Uvicorn 运行在 localhost,生产环境中不启用调试器 |
## 🗂️ 项目结构
```
Python_Vulnerability_Scanner/
├── secweb-toolkit/ # ← the current FastAPI application
│ ├── app/
│ │ ├── main.py # app factory, middleware, security headers
│ │ ├── config.py # settings (all secrets from env)
│ │ ├── models.py # SQLAlchemy ORM
│ │ ├── routers/ # auth, security, admin, scanning, network, tools, recon
│ │ ├── services/ # clamav, virustotal, nmap, pcap, totp, hibp, audit, …
│ │ ├── templates/ # autoescaped Jinja2
│ │ └── static/ # CSS + JS
│ ├── tests/ # pytest suite
│ ├── Dockerfile · docker-compose.yml
│ └── README.md # detailed app docs
├── .github/workflows/ci.yml # lint + tests
└── app.py, network_pcap.py # original Flask app (kept for reference)
```
有关完整的应用级文档,请参阅 [`secweb-toolkit/README.md`](secweb-toolkit/README.md)。
## 🗺️ 路线图
- [ ] 将 WebAuthn / passkeys 作为第二因素
- [ ] 为长时间运行的扫描加入后台任务并进行状态轮询
- [ ] 基于 Redis 的速率限制,以支持多 worker 部署
- [ ] 可导出的扫描报告(PDF / JSON)
## 📜 许可证
基于 [MIT 许可证](LICENSE) 发布。
作为一段学习之旅而构建——从最初的 Flask 项目到一个经过强化且经过测试的 FastAPI 应用。
标签:AV绕过, CTI, FastAPI, Python, Web安全, 后端开发, 安全工具箱, 安全规则引擎, 密码管理, 恶意软件扫描, 插件系统, 无后门, 网络安全, 自定义DNS解析器, 蓝队分析, 请求拦截, 逆向工具, 隐私保护