Maiiaa30/ReconDashboard

GitHub: Maiiaa30/ReconDashboard

面向单人红队操作员的自托管侦察平台,以被动优先方式聚合攻击面与暴露面数据,并在严格授权控制下提供主动扫描能力。

Stars: 2 | Forks: 0

# 🛰️ Recon 仪表板 ### 单人操作、自托管的红队攻击面与侦察平台 *被动优先侦察、暴露面监控、OSINT 聚合以及受控的主动扫描 —— 全部通过浏览器完成,无需终端。*
[![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg?style=for-the-badge)](./LICENSE) [![Status](https://img.shields.io/badge/status-actively%20developed-brightgreen?style=for-the-badge)](#) [![Authorized use only](https://img.shields.io/badge/use-authorized%20targets%20only-red?style=for-the-badge)](#-legal--ethical-use)
![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?style=flat-square&logo=typescript&logoColor=white) ![React](https://img.shields.io/badge/React-20232A?style=flat-square&logo=react&logoColor=61DAFB) ![Vite](https://img.shields.io/badge/Vite-646CFF?style=flat-square&logo=vite&logoColor=white) ![Tailwind CSS](https://img.shields.io/badge/Tailwind-38B2AC?style=flat-square&logo=tailwind-css&logoColor=white) ![Node.js](https://img.shields.io/badge/Node.js-339933?style=flat-square&logo=node.js&logoColor=white) ![Fastify](https://img.shields.io/badge/Fastify-000000?style=flat-square&logo=fastify&logoColor=white) ![SQLite](https://img.shields.io/badge/SQLite-07405E?style=flat-square&logo=sqlite&logoColor=white) ![Docker](https://img.shields.io/badge/Docker-2496ED?style=flat-square&logo=docker&logoColor=white)
## ✨ 概述 **Recon Dashboard** 是一个面向个人单用户的平台,用于在授权的授权测试项目中追踪资产和侦察数据。它倾向于**被动优先** —— 在不触碰目标的情况下,尽可能安全地拉取所有信息;并将具有明显网络特征的主动工具置于明确的授权控制之下。所有任务都**在服务端作为后台作业运行**,并完全通过深色的现代 Web UI 驱动。无需终端,无需复制粘贴工具输出。 - 🔎 **被动优先侦察** —— 证书透明度、DNS、WHOIS、技术指纹、存档 URL 来源以及“每个域名的 Shodan”暴露数据,尽可能在无 API key 的情况下运行。 - 🚨 **持续监控** —— 按计划对每个域名进行自动侦察,子域名差异对比,并在新子域名出现的瞬间发出 **Discord 提醒**。 - 🎯 **受控的主动扫描** —— `nmap`、`nuclei`、`ffuf` 等相关工具,受 `active_authorized` 标志锁定,绝对不会针对未授权目标发起扫描。 - 🧠 **发现结果分类** —— 基于确定性规则的评分、完整的从发现到解决的声明周期,以及可导出的单域名 Markdown 报告。 - 🗒️ **操作员工作区** —— Markdown 笔记(可一键推送到 Discord)和自动保存的内嵌 Excalidraw 画布。 - 🔐 **专为隐私构建** —— 单一强化登录并支持可选的 TOTP 2FA,旨在部署在 Tailscale 之后,并由您掌控加密的数据库备份。 ## 🧩 模块 | 模块 | 功能 | 模式 | | --- | --- | :---: | | **Domains** | 追踪目标;支持针对单个域名设置 `passive_only` / `active_authorized` 模式;定时自动监控;KPI 概览 | — | | **Subdomains** | 被动发现 (crt.sh · certspotter · subfinder)、HTTP probe 富化、差异对比并标记新发现、Discord 提醒、导出 | 🟢 passive | | **Exposure** | 通过 Shodan InternetDB + cvedb 获取“每个域名的 Shodan”数据 —— 开放端口、CVE、CPE(免费,无需 API key) | 🟢 passive | | **OSINT** | DNS · WHOIS · 证书透明度 · zone-transfer · server/tech 指纹 · 存档 URL (Wayback, Common Crawl, urlscan, OTX) | 🟢 passive | | **WAF / Origin** | 发现隐藏在 Cloudflare / WAF 背后的真实源 IP | 🟢 passive | | **Screenshots** | 使用 Headless-Chromium 的截图画廊及灯箱预览 | 🟢 passive | | **Scans** | `nmap` · `nuclei` (template-tag 预设) · `ffuf` — **受控,高网络特征** | 🔴 active | | **Tools** | `katana` · `naabu` · `dalfox` · `sslscan` · WordPress enum — **受控** | 🔴 active | | **OWASP** | 进程内 HTTP 检查(headers、暴露的 `.env`/`.git`、反射型 XSS、开放重定向、CORS、TRACE、listings)+ nuclei 扫描,具备目标感知能力 | 🔴 active | | **Fuzzing** | `ffuf` 内容发现,支持目标与字典选择器 | 🔴 active | | **Findings** | 评分与去重,包含“评分依据” + CVE 详情、分类声明周期、CSV/JSON 导出、单域名 Markdown 报告 | — | | **Notes / Canvas** | Markdown 笔记(推送到 Discord)· 自动保存至数据库的 Excalidraw 画板 | — | | **Logs / Settings** | 带有任务控制的实时活动日志 · 2FA 注册 · 系统状态 · 加密备份 | — | ## 🏗️ 架构 ``` ┌────────────────────────┐ ┌──────────────────────────────┐ │ React + Vite SPA │ REST │ Fastify + TypeScript API │ │ (Tailwind, dark UI) │ ─────► │ ├─ auth (argon2 + TOTP) │ └────────────────────────┘ │ ├─ jobs table + worker loop │ │ └─ recon CLI tools (execFile)│ └──────────────┬───────────────┘ │ ┌───────▼────────┐ │ SQLite (Drizzle)│ └──────────────────┘ ``` - **Frontend** — React + Vite + TypeScript + Tailwind(单 SPA,对 PWA 友好) - **Backend** — Node.js + Fastify + TypeScript(REST API) - **Database** — 通过 Drizzle ORM 使用 SQLite (`better-sqlite3`) - **Jobs** — 一个由进程内 worker 轮询的 `jobs` 表 —— **无需 Redis** - **Packaging** — Docker + Docker Compose ## 🚀 快速开始 ``` git clone https://github.com/Maiiaa30/ReconDashboard.git cd ReconDashboard cp .env.example .env # then edit it — never commit .env docker compose up --build ``` - **Frontend** → - **Backend health** → 在任何实际使用前,请设置真实的 `ADMIN_PASSWORD` 和 32 个字符以上的 `SESSION_SECRET` —— 如果没有它们,服务端将拒绝启动。首次运行时,它会初始化操作员账号、应用数据库迁移,并记录一次性的 `otpauth://` URL,以便您稍后从 **Settings** 中启用 2FA。SQLite 数据库位于 `app-data` 卷中,即使重新构建也会保留。 ## 🔒 安全基本原则 这些规则在代码中强制执行,而不仅仅是文档说明: - 🖥️ 安全工具**仅在服务端运行** —— 每个操作都由 UI 触发;绝不执行原始的 shell 输入。 - 🧵 绝不使用用户输入构建 shell 命令字符串 —— 子进程使用 `execFile` / `spawn` 并传入**显式的参数数组**。 - ✅ 每个域名/主机输入在使用前都会通过**严格的白名单正则表达式**进行验证。 - 🚧 主动/高网络特征模块需要针对单域名开启 `active_authorized`(被动域名需要针对每次运行进行明确确认),且每个主动扫描目标都必须属于已授权的域名。 - 🛡️ 出站 HTTP 检查会拒绝解析为内部/私有/回环 IP 的目标(**防范 SSRF**),与安全相关的验证由单元测试覆盖(`cd backend && npm test`)。 - 🔑 代码中不含任何密钥 —— 所有敏感信息均来自 `.env`。 ## 🌐 部署 在本地,您可以运行 `docker compose up`。在生产环境中,它旨在部署在私有 VM(Oracle Always Free / Hetzner / OVH)上,**位于 Tailscale 之后** —— 绝不直接暴露在公共互联网中。除了 Tailscale 能够访问到的范围外,默认设计上不进行任何公共端口映射,也没有公共 TLS/ACME。请在离线机器上保留一份**加密备份**(Settings → Encrypted backup),这样即使主机被暂停也不会导致数据丢失。 ## 📄 License 本项目基于 **Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0)** 许可证授权 —— 详见 [`LICENSE`](./LICENSE)。 **通俗解释** 🧷: - ✅ 您可以自由地使用、学习、修改和分享,但需**署名**。 - 🚫 **非商业性使用 (NonCommercial)** —— 不得将本项目或其衍生作品用于商业用途。 - 🔁 **相同方式共享 (ShareAlike)** —— 任何分发的衍生作品必须在**相同的许可证**下发布。 - ⚠️ 本项目不提供任何形式的**担保**。 ``` Recon Dashboard — a self-hosted red team recon platform Copyright (C) 2026 Maiiaa30 Licensed under CC BY-NC-SA 4.0 (Attribution-NonCommercial-ShareAlike 4.0 International). You are free to use, modify and share this work — with attribution, non-commercially, and under the same license — see LICENSE or https://creativecommons.org/licenses/by-nc-sa/4.0/ ``` ## ⚠️ 免责声明 本软件仅用于**授权的安全测试和教育目的**。对于因滥用本程序造成的任何误用或损害,作者**不承担任何责任**。在未经所有者明确书面授权的情况下,对系统运行侦察、扫描、模糊测试或漏洞利用工具是**违法**且不道德的。使用本软件即表示您同意对您的行为承担全部责任,并将遵守所有适用的法律法规。
用 ☕ 和对安全边界的高度敬畏构建。 **[⬆ 返回顶部](#️-recon-dashboard)**
标签:Fastify, MITM代理, React, Syscalls, 动态插桩, 实时处理, 密码管理, 自动化攻击, 请求拦截