theAwful/ForSight
GitHub: theAwful/ForSight
一款基于 Web 的外部渗透测试编排平台,将 ROE 范围界定、分阶段清单、多工具执行与结果打包串联为统一流程。
Stars: 0 | Forks: 0
# ForSight
**外部渗透测试清单与工具封装器** — 一款用于统筹外部渗透测试的 Web 应用,涵盖从 ROE(交战规则)到侦察、枚举、Web 检查及报告的全流程。
[](LICENSE)
## 功能
- **ROE 驱动的范围** — 上传或粘贴 IP 和域名;针对每次测试任务编辑目标。
- **分阶段清单** — 接测前 → 侦察 → Nmap → 枚举 → Web 主机 → 漏洞利用 → 报告,提供进度条和可折叠部分。
- **工具编排** — 运行 subfinder、dnsrecon、Amass、theHarvester、WHOIS、Nmap、testssl/sslscan、SNMP/FTP/SMB/LDAP 检查、Nuclei、Nikto、Dirb、Gowitness、CMS 扫描器等;输出结果实时流式传输至 UI。
- **主机视图** — 汇总主机信息,包括端口、屏幕截图(Gowitness)和 Nuclei 发现;可从列表中移除超出范围的主机。
- **身份验证** — 基于会话的登录(默认 `forsight` / `forsight`;在生产环境中请自行覆盖修改)。
- **报告** — 将工作底稿(扫描输出)以 zip 压缩包形式下载。
## 快速开始(Docker)
**运行 ForSight 最简单的方式** — 一次性启动后端(Kali + 工具)和前端:
```
git clone https://github.com/theAwful/ForSight.git
cd ForSight
docker compose up -d
```
如果构建失败并提示 **"Temporary failure resolving 'deb.debian.org'"**,说明构建沙盒没有 DNS。请在构建时使用 host 网络模式,以便其解析并获取软件包:
```
docker compose build --network=host
docker compose up -d
```
- **应用界面:** http://localhost (端口 80)
- **登录账号:** `forsight` / `forsight`
- 后端使用 **Debian Bookworm**,并从 Debian 软件库安装工具(nmap、nikto、dirb、whois、sslscan、masscan、curl)。如果需要更多工具(subfinder、nuclei、amass 等),请在容器内手动安装,或者在构建环境能够访问 Kali 软件源时使用基于 Kali 的镜像。
- 数据(数据库、上传文件、结果)存储在 Docker volume `forsight_data` 中,并在重启后保留。
- 可选:在运行 `docker compose up` 之前,在环境变量或 `.env` 文件中设置 `FORSIGHT_SECRET_KEY`。
停止运行:`docker compose down`。代码修改后重新构建:`docker compose up -d --build`。
## 快速开始(本地)
### 前置条件
- **Python 3.10+**(后端)
- **Node 18+**(前端)
- 根据需要在 `PATH` 中配置好渗透测试工具:`nmap`、`subfinder`、`dnsrecon`、`amass`、`theHarvester`、`whois`、`testssl.sh`、`sslscan`、`nuclei`、`nikto`、`dirb`、`gowitness`、`wpscan`、`droopescan` 等。
### 后端
```
cd backend
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
```
可选:将 `.env.example` 复制为 `.env`,并为生产环境设置 `FORSIGHT_SECRET_KEY` 和 `FORSIGHT_DEFAULT_PASSWORD_HASH`。
```
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```
### 前端
```
cd frontend
npm install
npm run dev
```
- **应用界面:** http://localhost:5173
- **API 文档:** http://localhost:8000/docs
默认登录账号:**forsight** / **forsight**。
## 项目结构
| 路径 | 描述 |
|------|-------------|
| `backend/` | FastAPI 应用:身份验证、项目、ROE/目标、清单、任务、运行器(recon、nmap、ssl、legacy、web、CMS)、主机聚合 |
| `backend/app/` | 核心应用:`main.py`、`config.py`、`auth.py`、`checklist.py`、`hosts_aggregator.py`、`runners/` |
| `backend/data/` | SQLite 数据库、上传文件、各项目结果、字典表。本仓库包含用于演示的**示例数据**;在生产环境中请删除或替换。 |
| `frontend/` | Vite + React UI:登录、测试任务、清单、任务、主机、报告、设置 |
| `docker-compose.yml` | 运行后端(Kali + 工具)+ 前端(nginx);使用单条命令即可启动。 |
| `docs/` | **用户指南与参考** — [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/)(与 [KrakenHashes](https://zerkereod.github.io/krakenhashes/latest/user-guide/) 风格一致)。运行 `pip install -r docs/requirements.txt && mkdocs serve -a 127.0.0.1:8001`,然后打开 http://127.0.0.1:8001。 |
| `backend/docs/TOOLS.md` | 工具的连接方式以及如何添加或替换它们 |
## 文档
完整的用户指南、参考说明和部署文档位于 **`docs/`** 目录中,使用 **Material for MkDocs** 构建:
```
pip install -r docs/requirements.txt
mkdocs serve
```
打开 **http://127.0.0.1:8001**(使用 `mkdocs serve -a 127.0.0.1:8001` 以避免与后端的 8000 端口冲突)。具体结构请参见 `docs/` 和 `mkdocs.yml`。
## 配置说明
后端使用 **pydantic-settings** 读取环境变量,前缀为 `FORSIGHT_`,并支持可选的 `.env` 文件:
| 变量 | 描述 |
|----------|-------------|
| `FORSIGHT_SECRET_KEY` | 会话签名密钥(生产环境中必填) |
| `FORSIGHT_DEFAULT_USERNAME` | 登录用户名(默认为 `forsight`) |
| `FORSIGHT_DEFAULT_PASSWORD_HASH` | 用于覆盖默认密码的 Bcrypt 哈希值 |
| `FORSIGHT_DATA_DIR` | 基础数据目录(默认为 `data`) |
| `FORSIGHT_*_PATH` | 工具路径(例如 `FORSIGHT_NMAP_PATH`、`FORSIGHT_DIRB_PATH`) |
## 清单阶段(摘要)
1. **接测前** — 范围界定与沟通协调(无运行器)。
2. **侦察** — Subfinder、dnsrecon、Amass、theHarvester、WHOIS、云枚举、凭证泄露。
3. **Nmap** — TCP 顶部端口扫描、服务指纹识别;在进行枚举和 Web 主机检查前必须完成此步。
4. **枚举** — SSL/TLS、遗留协议(Nmap、SNMP、FTP、SMB、Banners、LDAP)、电子邮件安全。
5. **Web 主机** — Nuclei、Nikto、Dirb、Gowitness、CMS(wpscan、droopescan、CMSeek)。
6. **漏洞利用** — 密码喷射(手动/Burp)。
7. **报告** — 下载工作底稿 zip 压缩包。
## 许可证
MIT — 详见 [LICENSE](LICENSE)。
标签:Docker, reconnaissance, 安全防御评估, 实时处理, 密码管理, 数据泄露, 自动化编排, 自定义脚本, 请求拦截, 逆向工具