Madhu1905/Python_Vulnerability_Scanner

GitHub: Madhu1905/Python_Vulnerability_Scanner

一个基于 FastAPI 构建的全能 Web 安全工具包,集恶意软件扫描、网络分析、身份认证和审计日志于一体,解决了安全工具分散部署与自身安全加固的问题。

Stars: 0 | Forks: 0

# 🔐 SecWeb Toolkit **一个经过强化的全能 Web 安全工具包——包含恶意软件与 URL 扫描、网络分析、隐写术、加密以及现代身份验证——基于 FastAPI 构建。** [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/Madhu1905/Python_Vulnerability_Scanner/actions/workflows/ci.yml) [![Python](https://img.shields.io/badge/python-3.13-3776AB?logo=python&logoColor=white)](https://www.python.org/) [![FastAPI](https://img.shields.io/badge/FastAPI-0.115-009688?logo=fastapi&logoColor=white)](https://fastapi.tiangolo.com/) [![Tests](https://img.shields.io/badge/tests-27%20passing-brightgreen)](https://github.com/Madhu1905/Python_Vulnerability_Scanner/actions/workflows/ci.yml) [![Ruff](https://img.shields.io/badge/lint-ruff-261230?logo=ruff&logoColor=white)](https://github.com/astral-sh/ruff) [![License: MIT](https://img.shields.io/badge/license-MIT-green)](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解析器, 蓝队分析, 请求拦截, 逆向工具, 隐私保护