yzaakk/vulnerability-scanner
GitHub: yzaakk/vulnerability-scanner
一个纯 Python 实现的轻量级命令行漏洞扫描器,用于检测开放端口、弱配置和过时软件版本并生成分级风险报告。
Stars: 0 | Forks: 0
# 🔍 漏洞扫描器(微型项目)
一个使用 Python 构建的命令行漏洞扫描器,可检测 Web 应用程序和网络中常见的安全弱点。这是 **Thiranex 技能开发计划 — 项目 2** 的一部分。
## 📸 功能
- ✅ **端口扫描器** — 扫描开放端口并带有实时进度条
- ✅ **风险分级** — 将每个开放端口标记为 CRITICAL / HIGH / MEDIUM / LOW
- ✅ **弱配置检测** — 识别危险的配置错误:
- 匿名 FTP 登录
- Telnet 服务正在运行
- SMB 暴露(EternalBlue / WannaCry 风险)
- RDP 公开暴露
- 可从互联网访问的数据库(MySQL, MongoDB, Redis, PostgreSQL, MSSQL)
- HTTP 而非 HTTPS
- ✅ **Banner 抓取** — 检测过时/有漏洞的软件版本
- ✅ **漏洞报告** — 自动保存详细的 `.txt` 报告
- ✅ **3 种扫描模式** — 快速、完全或自定义端口范围
- ✅ **无需外部库** — 纯 Python 3 编写,可在任何地方运行
## 🚀 如何运行
```
# Clone the repo
git clone https://github.com/yzaakk/vulnerability-scanner.git
cd vulnerability-scanner
# Run the scanner (Python 3 required)
python3 vulnerability_scanner.py
```
```
Enter target (IP or hostname): 192.168.1.1
Select scan mode:
[1] Quick Scan - Top 20 common ports
[2] Full Scan - All risky ports (recommended)
[3] Custom Scan - Enter port range manually
```
## 📊 示例输出
```
══════════════════════════════════════════════════════════
VULNERABILITY SCAN REPORT
══════════════════════════════════════════════════════════
Target : 192.168.1.1
Open Ports Found: 4
── OPEN PORTS ──────────────────────────────────────────
[CRITICAL] Port 23 Telnet
[HIGH] Port 21 FTP
[MEDIUM] Port 80 HTTP
[LOW] Port 443 HTTPS
── CONFIGURATION VULNERABILITIES ───────────────────────
[CRITICAL] Telnet Service Active
→ Telnet transmits all data in plaintext. Disable and replace with SSH.
── SUMMARY ─────────────────────────────────────────────
CRITICAL : 1
HIGH : 1
MEDIUM : 1
LOW : 0
Overall Risk: CRITICAL
```
## 🧠 学习到的概念
### 渗透测试基础
- **侦察** — 识别开放端口和服务(渗透测试的第一阶段)
- **端口扫描** — 通过 Python sockets 使用 TCP connect 扫描
- **Banner 抓取** — 从服务响应中提取软件版本信息
### 漏洞评估
- **CVE 意识** — EternalBlue (MS17-010)、vsftpd 后门 (CVE-2011-2523)、PHP EOL 风险
- **配置错误风险** — 为什么数据库、RDP 和 Telnet 永远不应该直接面向互联网
- **风险评分** — CRITICAL / HIGH / MEDIUM / LOW 严重程度分类(类似于 CVSS)
### 网络概念
- TCP 3 次握手和用于非阻塞端口检查的 `connect_ex()`
- Python 中的 Socket 编程
- 用于主机发现的 ICMP ping
## 📁 项目结构
```
vulnerability-scanner/
│
├── vulnerability_scanner.py # Main scanner script
└── README.md # Documentation
```
## 🛡️ 覆盖的端口
| 端口 | 服务 | 风险 |
|------|---------|------|
| 21 | FTP | HIGH |
| 22 | SSH | LOW |
| 23 | Telnet | CRITICAL |
| 80 | HTTP | MEDIUM |
| 443 | HTTPS | LOW |
| 445 | SMB | CRITICAL |
| 3306 | MySQL | HIGH |
| 3389 | RDP | CRITICAL |
| 6379 | Redis | CRITICAL |
| 27017 | MongoDB | CRITICAL |
| ...及其他 | | |
## 👤 作者
**Vaishak VJ**
BCA 毕业生 | 网络安全爱好者 | CICSA 候选人
[TryHackMe](https://tryhackme.com/p/vaishakvj1097) • [Blue Team Labs Online](https://blueteamlabs.online)
*为 Thiranex 技能开发计划 — 项目 2 而构建*
标签:Python, 实时处理, 插件系统, 数据统计, 无后门, 服务器安全, 端口扫描, 网络安全, 逆向工具, 隐私保护