funsoi-hub/dast-scanner
GitHub: funsoi-hub/dast-scanner
基于 OWASP ZAP 的容器化 Web 应用动态安全扫描工具,自动化完成漏洞检测并生成符合 NIST 标准的专业 VAPT 报告。
Stars: 0 | Forks: 0
# DAST Scanner - Web 应用程序漏洞评估工具
[](https://www.python.org/)
[](https://www.docker.com/)
[](https://www.zaproxy.org/)
[](LICENSE)
基于 OWASP ZAP 构建的动态应用程序安全测试(DAST)工具。通过专业的 VAPT 报告实现 Web 应用程序漏洞扫描的自动化。
## 功能
- 自动化漏洞扫描 - SQLi、XSS、CSRF、安全头等
- 专业 VAPT 报告 - 包含执行摘要的 HTML 和 JSON 输出
- 漏洞去重 - 对不同 URL 中的相同发现进行分组
- Docker 容器化 - 跨任何平台的一致执行
- 持久化 ZAP 容器 - 更快的重复扫描
- CVSS v3.1 评分 - 行业标准的严重性评级
- 可点击的目录 - 轻松导航报告
- 扩展超时处理 - 无不活动超时,扫描运行至完成
## 架构
```
┌─────────────────────────────────────────────────────────────┐
│ DOCKER ENVIRONMENT │
├─────────────────────────────────────────────────────────────┤
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ ZAP Container │ │ Scanner Container│ │
│ │ (Persistent) │◄────│ (Ephemeral) │ │
│ │ Port: 8081 │ │ Runs per scan │ │
│ └─────────────────┘ └─────────────────┘ │
│ │ │ │
│ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ SHARED VOLUME: /reports/ │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
```
## 快速开始
### 前置条件
- Docker Desktop 20.10+ 或 Docker Engine
- 建议 8GB RAM
- Git
### 安装
克隆仓库并导航到项目文件夹:
git clone https://github.com/YOUR_USERNAME/dast-scanner-public.git
cd dast-scanner-public
### 用法
使用 Windows 批处理文件运行扫描:
docker-scan.bat
在提示时输入目标 URL。根据应用程序大小,扫描大约运行 45-90 分钟。
或者,直接使用 Docker Compose:
docker compose up -d zap
docker compose build scanner
docker compose run --rm scanner --url https://example.com --active-timeout 7200
### 命令行参数
| 参数 | 描述 | 默认值 |
|----------|-------------|---------|
| --url | 要扫描的目标 URL | 必填 |
| --active-timeout | 最大扫描持续时间(秒) | 7200(2 小时) |
| --scan-id | 自定义扫描标识符 | 自动生成 |
| --zap-host | ZAP API 主机 | localhost |
| --zap-port | ZAP API 端口 | 8080 |
## Windows 批处理文件
| 文件 | 用途 |
|------|---------|
| docker-scan.bat | 主启动器 - 启动 ZAP 并运行扫描 |
| docker-rebuild.bat | 在代码更改后重建扫描器镜像 |
| docker-stop.bat | 停止所有容器 |
| docker-status.bat | 检查容器和报告状态 |
| cleanup.bat | 删除所有报告并重置容器 |
## 报告输出
报告在 reports 目录中生成,命名格式为 DSCAN-XXX_YYYYMMDD_HHMMSS.html 及对应的 JSON 文件。
### 报告部分
- 机密性声明与免责声明
- 基于 NIST SP 800-115 和 OWASP 的评估概述
- 使用 CVSS v3.1 评分的发现严重性评级
- 涵盖可能性和影响的风险说明
- 带有直观严重性卡片的执行摘要
- 按漏洞类别划分的测试摘要
- 测试人员备注和建议
- 漏洞摘要表
- 包含证据和修复步骤的详细发现
## 扫描阶段与时间
| 阶段 | 进度 | 活动 | 典型持续时间 |
|-------|----------|----------|------------------|
| Spider 发现 | 0-36% | URL 枚举与被动分析 | 5-10 分钟 |
| 主动攻击 | 36-37% | SQLi、XSS、CSRF 探测 | 20-40 分钟 |
| 完成 | 37-100% | 剩余检查和告警处理 | 10-20 分钟 |
## 项目结构
```
dast-scanner-public/
├── dast_scanner.py # Main scanner application
├── docker-compose.yml # Docker services configuration
├── Dockerfile # Scanner container build
├── requirements.txt # Python dependencies
├── docker-scan.bat # Windows launcher script
├── docker-rebuild.bat # Rebuild scanner image
├── docker-stop.bat # Stop containers
├── docker-status.bat # Check status
├── cleanup.bat # Reset all data
├── .gitignore # Git ignore rules
├── LICENSE # MIT License
└── README.md # This file
```
## 故障排除
| 问题 | 解决方案 |
|-------|----------|
| ZAP 容器启动失败 | 在 Docker Desktop 设置中将 Docker 内存增加到至少 4GB |
| 扫描停滞在 36-37% 并显示 "continuing" 消息 | 这是正常的。请等待 20-40 分钟,让主动攻击阶段完成 |
| 未发现 URL | 目标可能是单页应用程序或没有可爬取的链接。请验证目标可访问性 |
| 端口 8081 已被占用 | 更改 docker-compose.yml 中的端口映射或停止冲突进程 |
| 容器名称冲突 | 运行 cleanup.bat 重置所有容器和网络 |
| 内存不足错误 | 将 Docker Desktop 的内存分配增加到 8GB 或更高 |
| "ZAP is taking longer than expected" | 首次运行时会下载插件。请等待最多 2 分钟 |
## 维护命令
检查容器和报告状态:
docker-status.bat
更新代码后重建扫描器:
docker-rebuild.bat
不使用时停止所有容器:
docker-stop.bat
重置所有内容并删除所有报告:
cleanup.bat
## 贡献
欢迎贡献。请遵循以下步骤:
1. Fork 该仓库
2. 使用 git checkout -b feature/amazing-feature 创建一个功能分支
3. 使用 git commit -m 'Add amazing feature' 提交您的更改
4. 使用 git push origin feature/amazing-feature 推送到该分支
5. 在 GitHub 上打开一个 Pull Request
## 免责声明
此工具对 Web 应用程序执行主动安全扫描。仅对您拥有或获得明确书面许可进行测试的应用程序使用。未经授权的扫描可能违反法律和服务条款。作者对未经授权或不当使用本软件不承担任何责任。
## 许可证
本项目基于 MIT 许可证授权。有关完整详细信息,请参阅 LICENSE 文件。
MIT 许可证摘要:特此免费授予任何获得本软件副本的人使用、复制、修改、合并、发布、分发、再许可和销售本软件副本的权利,前提是所有副本中均包含版权声明和许可声明。
## 致谢
- OWASP ZAP 提供了世界上最受欢迎的免费 Web 安全测试平台
- 开源安全社区提供的方法论和最佳实践
- 灵感来源于专业渗透测试框架,包括 NIST SP 800-115 和 OWASP Testing Guide
标签:AES-256, CISA项目, CSRF, CVSS v3.1评分, DAST, DNS枚举, Docker容器化, Docker部署, MIT开源协议, OWASP ZAP, Python, VAPT, Web安全, Web应用安全评估, Web漏洞扫描, XSS, ZAP代理, 动态应用安全测试, 安全基线检查, 安全报告生成, 恶意软件分析, 无后门, 漏洞去重, 漏洞情报, 漏洞评估, 版权保护, 网络安全工具, 蓝队分析, 请求拦截, 跨站脚本攻击, 黑盒测试