agunna99/vulnscan_project
GitHub: agunna99/vulnscan_project
一个基于 Python 标准库的轻量级 DevSecOps 漏洞扫描器,覆盖端口、HTTP 头、SSL、DNS 与 CVE 检查。
Stars: 0 | Forks: 0
# VulnScan 🛡️
使用纯 Python 标准库构建 — 无需 pip 安装。
## 功能
| 检查 | 标志 | 检测内容 |
|---|---|---|
| 端口扫描 | `--ports` | 开放的高风险端口(RDP、SSH、MySQL、Redis、MongoDB...) |
| HTTP 头 | `--headers` | 缺失的安全头(HSTS、CSP、X-Frame-Options...) |
| CVE 检查 | `--vulns` | 存在已知 CVE 的过时 Apache、nginx、PHP 版本 |
| TLS/SSL | `--ssl` | 证书过期、仍启用 TLS 1.0/1.1 |
| DNS 侦察 | `--dns` | DNS 记录、区域传输、SPF/DMARC 检查 |
## 要求
- Python 3.8+
- `dig` 命令(用于 DNS 检查)
- Windows:安装 [BIND 工具](https://www.isc.org/bind/)
- Linux/Ubuntu:`sudo apt install dnsutils`
- macOS:预装
## 安装
无需安装。只需下载 `vulnscan.py` 并运行。
```
# 克隆或下载
git clone https://github.com/yourhandle/vulnscan
cd vulnscan
```
## 用法
```
# 运行所有检查
python vulnscan.py example.com --all
# 运行特定检查
python vulnscan.py example.com --ports
python vulnscan.py example.com --headers
python vulnscan.py example.com --ssl
python vulnscan.py example.com --dns
python vulnscan.py example.com --vulns
# 组合检查
python vulnscan.py example.com --ports --ssl
python vulnscan.py 192.168.1.1 --ports --headers
```
## 示例输出
```
PORT SCAN
──────────────────────────────────────────
[ LOW ] Port 80/tcp open (HTTP)
Plaintext web — should redirect to HTTPS
[ INFO ] Port 443/tcp open (HTTPS)
TLS web — expected
HTTP HEADER ANALYSIS
──────────────────────────────────────────
[ HIGH ] Missing: Strict-Transport-Security
HSTS missing — forces HTTPS, prevents downgrade attacks
Fix: Add 'Strict-Transport-Security' to your web server config
[ OK ] Content-Security-Policy: frame-ancestors 'none'
[ OK ] X-Frame-Options: SAMEORIGIN
SCAN SUMMARY
──────────────────────────────────────────
HIGH ███ 1
MEDIUM █ 1
LOW ████ 3
Report saved → vulnscan_example_com_20260331_120000.json
```
## 严重等级
| 等级 | 含义 |
|---|---|
| `CRITICAL` | 需要立即采取行动 — 严重暴露 |
| `HIGH` | 尽快修复 |
| `MEDIUM` | 应处理 — 中等风险 |
| `LOW` | 最佳实践改进 |
| `INFO` | 提示信息 — 无需操作 |
## 输出 / 报告
每次扫描会自动在同级目录保存一份 JSON 报告:
```
vulnscan_example_com_20260331_120000.json
```
示例 JSON 结构:
```
{
"target": "example.com",
"timestamp": "2026-03-31T12:00:00",
"duration_seconds": 8,
"total_findings": 5,
"findings": [
{
"category": "Header",
"severity": "HIGH",
"title": "Missing: Strict-Transport-Security",
"detail": "HSTS missing — forces HTTPS, prevents downgrade attacks",
"remediation": "Add 'Strict-Transport-Security' to your web server config"
}
]
}
```
## AWS EC2 部署
### 1. 启动 EC2 实例
- AMI:Ubuntu 22.04 LTS(t2.micro 免费层级可用)
- 安全组:允许所有出站流量,仅从你的 IP 允许入站 SSH
### 2. 引导(作为用户数据粘贴)
```
#!/bin/bash
apt-get update -y
apt-get install -y python3 dnsutils
git clone https://github.com/yourhandle/vulnscan /opt/vulnscan
chmod +x /opt/vulnscan/vulnscan.py
ln -s /opt/vulnscan/vulnscan.py /usr/local/bin/vulnscan
```
### 3. SSH 登录并运行
```
ssh -i your-key.pem ubuntu@
vulnscan example.com --all
```
### 4. 将报告保存到 S3(可选)
```
aws s3 cp vulnscan_*.json s3://your-bucket/reports/
```
## 已知限制
- **Windows 上的证书误报** — Python 可能无法验证本地有效证书。如果浏览器显示锁图标,则证书正常。可通过 `pip install certifi` 修复。
- **DNS 检查依赖 `dig`** — 若未安装 dig,则静默跳过 DNS 侦察。
- **CVE 检测基于头部** — 版本信息必须在 `Server:` 或 `X-Powered-By:` 头中暴露。使用 nikto 或 nuclei 可进行更深入的 CVE 扫描。
- **不能替代完整扫描器** — 生产环境安全审计应结合 nmap、nikto、OWASP ZAP 或 nuclei 使用。
## 扩展 VulnScan
可进一步改进的想法:
- **Nmap 集成** — 使用 `nmap -sV` 替换端口扫描器以进行服务检测
- **Nuclei 模板** — 将发现结果传入 nuclei 进行 CVE 验证
- **Slack 告警** — 对严重发现项发送 Webhook 通知
- **GitHub Actions** — 在每次部署时运行 `vulnscan $DOMAIN --headers --ssl`
- **Flask API** — 封装为 REST API 以提供 Web 仪表板前端
## 免责声明
## 本项目演示内容
- 使用原始套接字进行网络编程
- HTTP 协议内部机制(头部、TLS、重定向)
- 使用 `ThreadPoolExecutor` 的并发执行
- 安全领域知识(CVE、OWASP、DNS 卫生)
- 使用 argparse 和结构化 JSON 报告的 CLI 工具
- AWS EC2 部署
由 [Your Name] 构建 · [github.com/yourhandle](https://github.com/yourhandle)
标签:CSP, CVE检查, DevSecOps, DMARC, DNS侦察, DNS区域传送, HSTS, HTTP头检测, meg, SPF, SSL审计, TLS检测, X-Frame-Options, 上游代理, 二进制发布, 信息安全, 安全头, 安全扫描, 安全标准, 开源工具, 数据统计, 无依赖, 时序注入, 标准库, 端口扫描, 纯Python, 证书过期, 逆向工具