Secrover/Secrover

GitHub: Secrover/Secrover

一款免费开源的安全审计报告生成器,移除付费墙并提供可共享的操作性洞察。

Stars: 248 | Forks: 4

Secrover 是一个免费且开源的工具,用于生成清晰、专业的安全审计报告 —— 无需付费墙或专有 SaaS。只有值得信赖且可共享的实用洞察。 # Secrover ![GitHub last commit](https://img.shields.io/github/last-commit/secrover/secrover) ![Docker Pulls](https://img.shields.io/docker/pulls/secrover/secrover) ![Docker Stars](https://img.shields.io/docker/stars/secrover/secrover) ## 🔍 功能 * 🔒 **安全审计**:扫描依赖项、代码和域名以发现漏洞。 * 🧠 **易读报告**:清晰、可操作的报告,即使对非技术人员也友好。 * ⚡ **简单设置与自动化**:通过 YAML 配置文件即可轻松配置,支持使用内置 cron 定时执行周期性扫描,或通过 GitHub Actions 自动运行。 * 📤 **远程导出**:可将报告导出到 SFTP、WebDAV、SMB、S3 或 Google Drive。 * 💻 **跨平台**:支持 Linux、macOS 和 Windows。 * 🌟 **持续维护**:持续添加新功能并优化工作流程。 ### 审计 | 类别 | 检查项 | 支持的语言 | | ------------- | ---------------------------------------------------- | ------------------------------ | | 依赖项 | 漏洞检查 | 所有被 osv-scanner 支持的语言 | | 代码 | 静态检查 | 所有被 opengrep 支持的语言 | | 域名 | SSL 证书、HTTP→HTTPS 重定向、HSTS 头部、TLS 版本、开放端口、安全头部、托管位置 | - | ## 截图 | 依赖项审计 | 代码审计 | 域名审计 | | --- | --- | --- | | 依赖项审计 | 代码审计 | 域名审计 | ## 演示 你可以立即查看 Secrover 的运行效果: - 📊 实时生成的报告:[demo.secrover.org](https://demo.secrover.org) - 📂 示例 GitHub 仓库:[secrover-demo](https://github.com/secrover/secrover-demo) ### 演示如何工作 该演示仓库使用 **GitHub Actions** 自动执行以下操作: 1. 拉取最新版本的 Secrover(通过 Docker)。 2. 对 Secrover 仓库和域名执行安全扫描。 3. 生成 **HTML 安全报告**。 4. 将报告部署到 **GitHub Pages**,使其公开可访问。 ➡️ 你可以从 [演示仓库的 `.github/workflows/secrover.yml`](https://github.com/secrover/secrover-demo/blob/main/.github/workflows/secrover.yml) 复制工作流以快速开始。 ### 灵活的部署选项 Secrover 不仅限于 GitHub Actions —— 你还可以使用 rclone 将 [报告导出到任意远程目的地](#exporting-reports-optional)(如 SFTP、WebDAV、SMB、S3 等),使其在内部服务器、内网站点、云存储或备份位置自动可用。 这种灵活性确保无论你选择 **公开报告** 还是 **私有/内部托管**,Secrover 都能适配你的工作流程。 ## 快速开始 Secrover 设计简洁:只需配置要扫描的内容,然后使用 Docker 运行即可。 几分钟内,你就能拥有一个可以分享的专业的 **HTML 安全报告**。 创建一个新文件夹或仓库,并在其中放置一个 `config.yaml` 文件,列出你要扫描的仓库和域名。 ### 示例: ``` project: name: My project domains: - my-domain.com - subdomain.my-domain.com repos: - url: https://github.com/your-org/your-repo description: "Short description of the project" branch: "main" - url: https://github.com/your-org/another-repo description: "Another awesome project" ``` #### 访问私有仓库 Secrover 支持通过 **GitHub 个人访问令牌(PAT)** 以 HTTPS 方式克隆 **私有仓库**。 ##### 1. 创建 GitHub 个人访问令牌 * 前往 [你的 GitHub 账户](https://github.com/settings/tokens) * 点击 **“生成新令牌”**(精细权限) * 命名为 `Secrover` * 选择“仅选择仓库”并勾选 Secrover 需要克隆的私有仓库 * 在 **仓库权限** 中授予: * **内容:只读** * 生成并 **复制** 该令牌 ##### 2. 创建 `.env` 文件 在与 `config.yaml` 同一目录下创建 `.env` 文件: ``` GITHUB_TOKEN=yourgeneratedtokenhere ``` ## 安装并使用 Docker 运行 你可以无需安装任何本地依赖,直接使用 Docker 运行 Secrover。 ### 一次性扫描(按需) 在包含 `config.yaml`(以及可选的 `.env`)的文件夹中运行: ``` docker run -it --rm \ --env-file .env \ -v "$(pwd)/config.yaml:/config.yaml" \ -v "$(pwd)/output:/output" \ secrover/secrover ``` **执行过程:** * Secrover 从 `config.yaml` 读取仓库和域名列表。 * 它会克隆仓库并执行扫描,同时扫描你的域名。 * 将完整的 **HTML 安全报告** 生成到 `output/` 文件夹。 ### 自动化扫描(定时模式) Secrover 还支持使用内置定时调度器(通过 [Supercronic](https://github.com/aptible/supercronic))进行 **自动周期性扫描**。 你可以在容器内部定时执行扫描 —— 适用于服务器、NAS 等场景。 ### 示例:每天午夜运行 ``` docker run -it --rm \ -v "$(pwd)/config.yaml:/config.yaml" \ -v "$(pwd)/output:/output" \ -e CRON_SCHEDULE="0 0 * * *" \ secrover/secrover ``` **执行过程:** * Secrover 在后台启动 Supercronic。 * 根据设定计划执行新的扫描。 * 默认将结果写入 `/output`,日志写入 `/output/secrover.log`。 ### 报告导出(可选) Secrover 可通过 [rclone](https://rclone.org/) 将生成的报告上传至远程目的地(SFTP、WebDAV、SMB、S3 等)。 有关设置说明和高级选项,请参见 [EXPORT.md](docs/export.md)。 ## 环境变量参考 | 变量 | 是否必需 | 默认值 | 描述 | | ---------------- | -------- | -------------------- | ------------------------------------------------------------------------------------------------------ | | `CONFIG_FILE` | ✅ | `/config.yaml` | 容器内 YAML 配置文件的路径。 | | `OUTPUT_DIR` | ✅ | `/output` | 保存报告和日志的目录。 | | `REPOS_DIR` | ✅ | `repos/` | Git 仓库克隆目录。 | | `GITHUB_TOKEN` | ❌ | `-` | 用于通过 HTTPS 克隆私有 GitHub 仓库。 | | `CRON_SCHEDULE` | ❌ | `-` | 可选的 [cron 表达式](https://crontab.guru/),用于配置周期性扫描。 | | `EXPORT_ENABLED` | ❌ | `false` | 启用报告导出至远程目的地(使用 rclone)。 | | `RCLONE_REMOTES` | ❌ | `-` | rclone 配置中的远程名称列表(逗号分隔),用于上传报告。 | | `RCLONE_PATH` | ❌ | `/secrover-reports/` | 报告上传的目标远程路径(支持使用 `$(date +FORMAT)` 进行时间戳扩展)。 | | `IP2LOCATION_DB_PATH` | ❌ | `data/IP2Location/` | 用于从 IP 地址解析国家信息的 IP2Location 数据库文件路径。 | 所有变量都可以在 `.env` 文件中定义,或在运行容器时通过 `-e` 参数直接传入。 例如: ``` -e CONFIG_FILE=/config.yaml -e OUTPUT_DIR=/output ``` 等同于在 `.env` 文件中设置这些变量。 ## 许可证 Secrover 在 **GNU General Public License v3.0 (GPL-3.0)** 许可下发布。 👉 [在此阅读完整许可证](https://www.gnu.org/licenses/gpl-3.0.en.html) ## 星标趋势 [![Stargazers over time](https://starchart.cc/Secrover/Secrover.svg?variant=adaptive)](https://starchart.cc/Secrover/Secrover)
标签:AMSI绕过, Cron, DInvoke, Docker, GitHub Actions, Google Drive, HSTS, HTTP重定向, S3, SMB, SSL证书, TLS检查, WebDAV, 主机定位, 人机可读报告, 免费工具, 后端开发, 域名审计, 威胁检测, 安全合规, 安全头, 安全防御评估, 定时任务, 开放端口, 开源报告, 开源框架, 持续集成, 无付费墙, 日志审计, 易于使用, 服务器监控, 网络代理, 自动笔记, 请求拦截, 错误配置检测, 非技术用户