Jitesh17/secscan
GitHub: Jitesh17/secscan
整合十余款主流安全工具的自动化 Web 安全扫描编排框架,支持多格式报告输出和 AI 增强的漏洞修复建议。
Stars: 0 | Forks: 0
# secscan
[](https://pypi.org/project/secscan-tool/)
[](https://pypi.org/project/secscan-tool/)
[](LICENSE)
自动化 Web 安全扫描工具。针对目标运行可配置的一系列扫描,在运行存在风险的项目前会向您发出警告,并生成 HTML、Markdown 和 JSON 报告。

## 快速开始
PyPI 包名为 `secscan-tool`;它安装的 CLI 命令是 `secscan`。
在 macOS 或任何 PEP-668 系统上,请使用 [pipx](https://pipx.pypa.io/) 安装,以便 CLI 是独立隔离的并且在 `PATH` 中:
```
brew install pipx
pipx ensurepath
pipx install secscan-tool
```
在没有 pipx 的 Linux 系统上,用户级别的 `pip install` 也可以使用:
```
python3 -m pip install --user secscan-tool
```
验证安装:
```
secscan --version
secscan list-scanners
```
运行一次安全扫描:
```
secscan scan https://example.com
```
报告将以 HTML、Markdown 和 JSON 格式存放在 `./reports/-/` 目录中。
端口 8765 上的实时仪表板:
```
secscan serve
# 打开 http://localhost:8765
```
AI 定制的修复建议(可选)。在扫描前设置 `ANTHROPIC_API_KEY`:
```
export ANTHROPIC_API_KEY=sk-ant-...
secscan scan https://example.com --repo .
```
## 外部工具
大多数扫描器会调用外部二进制程序。上述 Python 安装仅为您提供 `headers` 和 `tls` 扫描。对于其他所有扫描,您需要安装该扫描器所使用的外部工具:
```
# macOS (Homebrew)
brew install nuclei nmap subfinder httpx trivy gitleaks ffuf semgrep
docker pull zaproxy/zap-stable # for zap-baseline / zap-full
# Debian / Ubuntu
sudo apt-get install -y nmap
# 通过其官方发布版本安装 nuclei, subfinder, httpx, trivy, gitleaks
sudo apt-get install -y python3-pip && pip install --user semgrep
docker pull zaproxy/zap-stable
```
或者完全跳过主机安装,直接使用 [Docker 镜像](#docker),该镜像捆绑了 `secscan` 以及 `nuclei`、`nmap`、`subfinder`、`httpx`、`trivy`、`semgrep` 和 `gitleaks`(不包含 ZAP 和 `ffuf`;如果需要 ZAP,请单独拉取 `zaproxy/zap-stable`)。
`secscan list-scanners` 会打印出每个扫描器、其风险级别以及它所依赖的外部工具。如果某个扫描器所需的工具不在 `PATH` 中,secscan 将跳过该扫描器并在报告中注明。
## Docker
项目包含了一个 `Dockerfile` 和 `docker-compose.yml` 用于自行托管仪表板。该镜像捆绑了 `secscan` 以及 `nuclei`、`nmap`、`subfinder`、`httpx`、`trivy`、`semgrep` 和 `gitleaks`。不包含 ZAP 和 `ffuf`(它们会显著增加镜像体积);如果您需要这些扫描器,请在主机上安装它们。
使用 compose 的快速启动:
```
git clone https://github.com/Jitesh17/secscan.git
cd secscan
export ANTHROPIC_API_KEY=sk-ant-... # optional, for AI-tailored fixes
docker compose up -d
```
打开 `http://localhost:8765`。报告将写入主机的 `./reports/` 目录(挂载到容器内的 `/app/reports`)。使用 `docker compose down` 停止。
不使用 compose:
```
docker build -t secscan:latest .
docker run -d --name secscan -p 8765:8765 \
-v "$PWD/reports:/app/reports" \
-e ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \
secscan:latest
```
注意事项:
- 镜像在 `linux/arm64` 上大约为 1.5 GB。大部分体积来自 `nuclei` 以及 `semgrep` 嵌入的 Rust 二进制文件。
- 工具版本通过 Dockerfile 的 `ARG`(`NUCLEI_VERSION`、`SUBFINDER_VERSION`、`HTTPX_VERSION`、`TRIVY_VERSION`、`GITLEAKS_VERSION`)进行固定。可以在构建时使用 `--build-arg` 进行覆盖。
- 容器以 root 身份运行,以便 `nmap` 能够执行 SYN 扫描。不要将端口 8765 暴露给不受信任的网络。
- 在容器内部进行一次性扫描:`docker compose exec dashboard secscan scan https://example.com`。
## 功能说明
| 扫描器 | 风险 | 使用的工具 |
|---|---|---|
| 安全请求头 | 安全 | requests |
| TLS / SSL | 安全 | sslyze |
| 子域名枚举 | 安全 | subfinder |
| 存活主机探测 | 安全 | httpx |
| 端口和服务扫描 | 安全 | nmap |
| 激进端口扫描 | 中 | nmap |
| 漏洞模板 | 低 | nuclei |
| 爬虫 + 被动扫描 | 低 | OWASP ZAP baseline |
| 主动 Web 攻击 | 中 | OWASP ZAP full scan |
| 内容发现 | 中 | ffuf |
| 代码漏洞扫描 | 安全 | semgrep |
| 依赖项扫描 | 安全 | trivy |
| 密钥扫描 | 安全 | gitleaks |
该工具拒绝在没有明确使用 `--i-accept-risk` 标志的情况下运行中等风险的扫描,并且会首先打印出可能造成的破坏估计。
## 从源码安装(用于开发)
如果您想对 secscan 本身进行修改开发,请在克隆后以可编辑模式安装:
```
git clone https://github.com/Jitesh17/secscan.git
cd secscan
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/secscan --help
```
内置的 `./install.sh` 脚本会检查外部工具,并针对缺失的工具打印安装提示。
## 使用说明
### CLI
列出可用的扫描器以及哪些可以在您的机器上运行:
```
secscan list-scanners
```
快速安全扫描(默认运行所有评级为 `safe` 的扫描器):
```
secscan scan https://example.com
```
按名称选择特定的扫描器:
```
secscan scan https://example.com --scans headers,tls,nuclei,zap-baseline
```
通过指向本地代码库来包含源代码扫描(启用 `code-trivy`、`code-semgrep`、`code-gitleaks`):
```
secscan scan https://example.com --repo /path/to/repo
```
使用配置文件(即命名的扫描器组合):
```
secscan scan https://example.com --profile safe # default
secscan scan https://example.com --profile code --repo .
secscan scan https://example.com --profile full --i-accept-risk
```
`safe`、`default`、`code` 和 `full` 是内置的配置文件。`--profile full` 包含中等风险的扫描,并且需要 `--i-accept-risk`。
其他有用的标志:
- `--allow-ip` 允许扫描 IP 地址目标(默认关闭,以防您意外扫描到非自己所有的基础设施)
- `--workers N` 指定并行运行的扫描器数量(默认为 4)
- `--rate-limit N` 设定 nuclei 的每秒最大请求数限制
- `--severity LEVEL` nuclei 严重程度过滤器(`info`、`low`、`medium`、`high`、`critical`)
- `-o, --output DIR` 将报告写入到 `./reports/` 以外的目录
- `--no-enrich` 完全跳过修复建议增强
- `--no-ai` 仅使用静态修复数据库;不调用 Claude
- `--no-code` 将发现的漏洞元数据发送给 AI,但不发送代码/配置片段(更具隐私性)
- `--max-ai-findings N` 限制发送给 Claude 的漏洞发现数量(默认为 50)
`secscan scan --help` 列出了所有标志。
报告将以 `report.html`、`report.md` 和 `report.json` 的形式写入 `./reports/-/` 目录中。
### Web 仪表板
```
secscan serve # binds 127.0.0.1:8765
secscan serve --host 0.0.0.0 --port 8765 # bind on all interfaces (Docker/LAN)
```
打开 `http://localhost:8765`,输入目标,选择扫描,点击运行。实时监控扫描进度并在完成后内嵌渲染报告。历史报告列在右侧面板中,可重新打开查看。
该仪表板没有身份验证且是单租户的。不要将其暴露给不受信任的网络;如果需要从 localhost 以外的地方访问,请将其置于反向代理或 VPN 之后。
### 修复建议增强
每一条漏洞发现都会通过两个层级获得增强的修复建议:
**层级 1:静态精选数据库(始终开启,免费)。** 一个针对常见发现的手写修复数据库。包括*操作步骤*、*重要性说明*以及代码/配置示例。涵盖 HSTS、CSP、缺失的请求头、已弃用的 TLS、暴露的服务、默认凭据、泄露的密钥等。
**层级 2:AI 定制的修复建议(可选)。** 当设置了 `ANTHROPIC_API_KEY` 时,secscan 会将每条发现发送给 Claude 并返回结合上下文的修复方案。对于代码扫描发现,它还会发送相关的代码片段,以便 AI 能为您提供精确的行级编辑建议。对于请求头相关的发现,它会发送您的 `_headers`/`vercel.json`/`astro.config.*` 文件,以便 AI 能准确告诉您该添加什么以及添加到哪里。
```
export ANTHROPIC_API_KEY=sk-ant-...
secscan scan https://example.com --repo .
```
标志:
- `--no-enrich` 完全禁用增强功能
- `--no-ai` 仅使用静态数据库(跳过 API 调用)
- `--no-code` 仅将元数据发送给 AI,不发送代码或配置片段(更具隐私性,但建议不够具体)
- `--max-ai-findings N` 限制发送给 AI 的漏洞发现数量(默认为 50,用于控制成本)
成本估算:使用 Sonnet 每发现一个漏洞大约花费 $0.002 到 $0.01,因此一次典型的扫描只需几美分。结果会根据漏洞哈希值进行缓存,因此重新扫描同一目标时会重用缓存的修复建议。
### GitHub Actions
将 `.github/workflows/security-scan.yml` 复制到您的代码库中。将目标配置为代码库变量。该工作流每周及按需运行,将报告作为构件上传,并在出现新的高危或严重发现时以 Issue 的形式发布摘要。
## 安全性
在没有明确确认的情况下,该工具不会运行任何中等风险或以上的操作。默认情况下:
- 仅以温和的速率限制进行扫描
- 除非您传递 `--allow-ip`,否则拒绝扫描 IP 地址(强制您思考其是否为您所有)
- 除非您选择退出,否则基于爬虫的扫描将遵循 `robots.txt`
在更改任何安全标志之前,请仔细阅读每个扫描器的风险说明。
标签:AI修复建议, CTI, Docker安全, FFUF, Gitleaks, Google, HTML报告, HTTP头检测, JSON报告, Markdown报告, MISP, MIT开源, Nmap, Nuclei, pipx, Python, Semgrep, TLS检查, Web安全扫描器, WordPress安全扫描, 安全合规, 实时仪表盘, 密码管理, 密钥泄露检测, 插件系统, 无后门, 网络代理, 网络安全, 虚拟驱动器, 请求拦截, 逆向工具, 隐私保护