红队自动化企业敏感信息泄露搜集快速修复漏洞点

admin 2026-06-18 07:28:13 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: SkyRadar是一个面向GitHub代码搜索的自动化敏感信息泄露发现系统,采用FastAPI后端和React前端架构,支持周期性扫描、结果复核及邮件/webhook通知。项目强调合规使用,提供Docker部署方案,具备多账号轮转、去重等稳定性设计,目前聚焦GitHub代码搜索主线功能。 综合评分: 76 文章分类: 安全工具,红队,WEB安全,安全运营,漏洞预警


cover_image

红队自动化企业敏感信息泄露搜集快速修复漏洞点

Southseast Southseast

Gh0xE9

2026年6月17日 08:10 北京

在小说阅读器读本章

去阅读

本工具仅用于网络安全技术研究、教学及合规的渗透测试,旨在帮助提升系统安全性。使用者在使用本工具时须严格遵守当地法律法规,严禁将本工具用于任何未经授权的非法活动或破坏性攻击,因滥用本工具所导致的任何直接或间接法律责任及后果,均由使用者本人承担,开发者对此不承担任何责任,使用本工具即视为您已理解并同意本声明。

项目地址

https://github.com/Southseast/SkyRadar

SkyRadar

SkyRadar 是一个面向 GitHub Code Search 的代码泄露发现系统。它按规则周期性检索 GitHub 代码内容,记录命中结果,提供复核界面,并通过邮件、钉钉 webhook 或飞书 webhook 发送通知。

  • • 产品名:SkyRadar
  • • 后端:FastAPI/ASGI + Gunicorn/Uvicorn + MongoDB + Redis + Huey
  • • 前端:React + Vite + TypeScript + Tailwind CSS + shadcn/ui
  • • 部署:Docker Compose 拆分 API、nginx、worker、Redis、MongoDB
  • • API 文档:docs/api/openapi.yaml,可通过 /api/v1/docs 暴露 Swagger UI

目录

  • • 能力边界
  • • 技术路线
  • • 项目架构
  • • 快速开始
  • • 配置
  • • 开发
  • • 测试与验证
  • • 部署
  • • 安全注意
  • • 文档索引
  • • Reference

能力边界

SkyRadar 当前聚焦 GitHub Code Search 主线:

  • • 周期性执行 GitHub code search。
  • • 支持多 GitHub 账号/PAT 配置和搜索配额展示。
  • • 展示泄露结果、趋势统计、标签统计、详情代码片段和受影响资产。
  • • 支持结果状态处理:确认、误报、忽略、备注。
  • • 支持查询规则、任务周期、黑名单、通知邮箱、SMTP、钉钉 webhook 和飞书 webhook 配置。
  • • 支持邮件、钉钉 webhook 和飞书 webhook 通知。

不在当前主线内的能力:

  • • 不把 TruffleHog/Gitleaks 等重扫描器直接放进 API route。
  • • 不在 FastAPI 请求线程内执行长时间扫描。
  • • 不默认提供公网多租户、用户权限和审计系统。
  • • 不把 GitHub PAT、SMTP 密码或 webhook token 展示给前端。

技术路线

SkyRadar 的路线按“稳定主链路、增强治理、再扩展扫描源”的顺序推进。

| 阶段 | 目标 | 状态 | | — | — | — | | P0 | FastAPI 后端、React 前端、Docker Compose 拆分部署、OpenAPI 契约和基础 smoke | 已落地 | | P1 | GitHub Code Search 稳定性:rate limit、账号轮转、分页恢复、失败重试、去重 | 进行中 | | P2 | Baseline 和误报治理:finding fingerprint、首次/最近发现、重复命中收敛 | 规划中 | | P3 | Target/revision 模型:把 repo、branch、commit、gist 等扫描对象建模 | 规划中 | | P4 | Event/webhook 增量扫描:GitHub Events 或 webhook 作为受控增量输入 | 规划中 | | P5 | 高级扫描:GH Archive、force-push、外部 detector harness | 评估中 |

详细后端路线见 docs/backend/PLAN.md,前端路线见 docs/frontend/PLAN.md

项目架构

Browser

nginx

React static assets

FastAPI API

MongoDB

Redis

GitHub API

Mail / DingTalk / Feishu

Huey worker

运行时拓扑:

  • • nginx:对外 HTTP 入口,服务 client/dist,并把 /api 反向代理到 API service。
  • • skyradar:FastAPI API service,监听容器内 8888
  • • worker:Huey 后台任务消费者,负责周期任务和扫描任务。
  • • redis:Huey broker/cache。
  • • mongo:持久化配置、扫描结果和处理状态。

代码目录:

client/
  src/components/      通用布局和 shadcn/ui 组件
  src/features/        按业务功能组织的前端组合组件
  src/lib/api/         类型化 API client 和响应映射
  src/pages/           页面入口

server/
  api/                 FastAPI routes,按 domain 内聚
  core/                配置、数据库、响应、安全等基础边界
  integrations/        GitHub、邮件、webhook 等外部系统适配
  workers/             Huey worker、调度和后台任务
  tests/               跨 domain 的后端 smoke/contract 测试

deploy/
  nginx/               nginx 站点配置
  supervisor/          容器内进程编排配置
  pyenv/               Python 运行和测试依赖

docs/
  api/openapi.yaml     OpenAPI 契约源
  backend/             后端路线、设计、测试、门禁和风险
  frontend/            前端路线、设计、测试、门禁和风险

快速开始

推荐用 Docker Compose 启动完整拓扑。

SKYRADAR_BASIC_AUTH_USERNAME=admin \
SKYRADAR_BASIC_AUTH_PASSWORD='change-me' \
docker compose up --build -d

默认访问:

  • • 前端:http://127.0.0.1/
  • • 健康检查:http://127.0.0.1/api/v1/health
  • • 默认启用 nginx Basic Auth;访问时使用启动命令中的用户名和密码。

停止:

docker compose down

修改对外端口:

SKYRADAR_BASIC_AUTH_USERNAME=admin \
SKYRADAR_BASIC_AUTH_PASSWORD='change-me' \
SKYRADAR_HTTP_PORT=8080 \
docker compose up --build -d

启用 Swagger UI:

SKYRADAR_BASIC_AUTH_USERNAME=admin \
SKYRADAR_BASIC_AUTH_PASSWORD='change-me' \
SKYRADAR_API_DOCS_ENABLED=1 \
docker compose up --build -d

启用后访问:

  • • Swagger UI:http://127.0.0.1/api/v1/docs
  • • OpenAPI JSON:http://127.0.0.1/api/v1/openapi.json

配置

常用环境变量:

| 变量 | 默认值 | 说明 | | — | — | — | | MONGODB_URI | mongodb://mongo:27017 | MongoDB 连接地址 | | MONGODB_DATABASE | skyradar | MongoDB database | | MONGODB_AUTH_SOURCE | skyradar | MongoDB 认证库 | | REDIS_HOST | redis | Redis host | | REDIS_PORT | 6379 | Redis port | | SKYRADAR_HTTP_PORT | 80 | Compose nginx 对外端口 | | SKYRADAR_IMAGE | skyradar:latest | Compose 构建/运行镜像名 | | SKYRADAR_MONGO_IMAGE | mongo:8.2.7 | Compose MongoDB 镜像 | | SKYRADAR_API_DOCS_ENABLED | false | 是否启用 /api/v1/docs | | SKYRADAR_OPENAPI_PATH | docs/api/openapi.yaml | OpenAPI 契约文件路径 | | SKYRADAR_BASIC_AUTH_ENABLED | true | 是否启用 nginx Basic Auth | | SKYRADAR_BASIC_AUTH_USERNAME | 空 | nginx Basic Auth 用户名,默认启用时必须设置 | | SKYRADAR_BASIC_AUTH_PASSWORD | 空 | nginx Basic Auth 密码,默认启用时必须设置 |

Basic Auth 默认开启,必须同时设置用户名和密码:

SKYRADAR_BASIC_AUTH_USERNAME=admin \
SKYRADAR_BASIC_AUTH_PASSWORD='change-me' \
docker compose up --build -d

仅在可信本地开发环境可显式关闭:

SKYRADAR_BASIC_AUTH_ENABLED=false docker compose up --build -d

GitHub PAT 建议使用 Fine-grained PAT:

  • • 只检索公开仓库:通常不需要额外 repository permission。
  • • 需要检索私有或组织仓库:只给目标仓库 Contents: Read-only
  • • 不要授予写权限,例如 Contents: WriteAdministrationActionsSecrets
  • • 建议使用短期 token,并按部署环境最小化仓库范围。
  • • 如果组织启用了 SSO/SAML,需要对 token 做组织授权。

钉钉 webhook 示例:

{
  "provider":"dingtalk",
"webhook_url":"https://oapi.dingtalk.com/robot/send?access_token=<dingtalk-access-token>",
"secret":"<dingtalk-signing-secret>",
"domain":"https://your-skyradar.example",
"enabled":true,
"test":false
}

飞书 webhook 示例:

{
&nbsp;&nbsp;"provider":"feishu",
"webhook_url":"https://open.feishu.cn/open-apis/bot/v2/hook/<feishu-hook-id>",
"secret":"<feishu-signing-secret>",
"domain":"https://your-skyradar.example",
"enabled":true,
"test":false
}

domain 会用于告警消息中的结果页链接。

开发

前端开发:

cd&nbsp;client
npm install
npm run dev

Vite dev server 已配置 /api 代理到 http://127.0.0.1:8888

后端本地开发需要先提供本机可访问的 MongoDB 和 Redis,再运行 API:

cd&nbsp;server
MONGODB_URI=mongodb://127.0.0.1:27017 \
REDIS_HOST=127.0.0.1 \
uv run --no-project --python 3.13 \
&nbsp; --with-requirements ../deploy/pyenv/requirements-dev.txt \
&nbsp; gunicorn -w 2 -k uvicorn.workers.UvicornWorker -b 127.0.0.1:8888 api:app

后台 worker:

cd&nbsp;server
MONGODB_URI=mongodb://127.0.0.1:27017 \
REDIS_HOST=127.0.0.1 \
uv run --no-project --python 3.13 \
&nbsp; --with-requirements ../deploy/pyenv/requirements-dev.txt \
&nbsp; huey_consumer.py workers.huey -k process -w 4

测试与验证

前端检查:

cd&nbsp;client
npm run check

后端单测:

uv run --no-project --python 3.13 \
&nbsp; --with-requirements deploy/pyenv/requirements-dev.txt \
&nbsp; pytest

后端契约检查:

uv run --no-project --python 3.13 \
&nbsp; --with-requirements deploy/pyenv/requirements-dev.txt \
&nbsp; python scripts/backend_openapi_check.py

uv run --no-project --python 3.13 \
&nbsp; --with-requirements deploy/pyenv/requirements-dev.txt \
&nbsp; python scripts/backend_route_coverage.py

Docker Compose smoke:

uv run --no-project --python 3.13 \
&nbsp; --with-requirements deploy/pyenv/requirements-dev.txt \
&nbsp; python scripts/backend_compose_smoke.py --fresh-volumes

部署

默认拆分拓扑:

SKYRADAR_BASIC_AUTH_USERNAME=admin \
SKYRADAR_BASIC_AUTH_PASSWORD='change-me'&nbsp;\
docker compose up --build -d

短期单容器兼容模式:

SKYRADAR_BASIC_AUTH_USERNAME=admin \
SKYRADAR_BASIC_AUTH_PASSWORD='change-me'&nbsp;\
docker compose --profile all-in-one up --build -d skyradar-all-in-one mongo

构建镜像:

docker build -t skyradar .

使用外部 MongoDB:

docker run -d \
&nbsp; --name skyradar \
&nbsp; -p 80:80 \
&nbsp; -e MONGODB_URI=mongodb://username:password@host:27017/skyradar \
&nbsp; -e SKYRADAR_BASIC_AUTH_USERNAME=admin \
&nbsp; -e SKYRADAR_BASIC_AUTH_PASSWORD='change-me'&nbsp;\
&nbsp; skyradar

安全注意

  • • /api/v1/* 当前没有应用级登录态。nginx Basic Auth 默认开启;部署到不可信网络前还必须配合 HTTPS、VPN、内网或可信反向代理。
  • • GitHub PAT、SMTP 密码和 webhook token 都属于敏感配置,避免在日志、截图、Issue 或聊天记录中暴露。
  • • POST /api/v1/github-accounts 不应向页面回显原始 token;前端 adapter 会在边界删除敏感字段,后端也应保持敏感字段不回显。
  • • MongoDB、Redis 和 Docker 基础镜像升级后,需要在目标部署环境复验 /api/v1/health、worker 消费和通知链路。

文档索引

后端:

  • • docs/backend/PLAN.md:路线
  • • docs/backend/PROGRESS.md:当前状态
  • • docs/backend/DESIGN.md:架构和 domain 边界
  • • docs/backend/IMPLEMENTATION_GUIDE.md:实现规则
  • • docs/backend/TESTING.md:测试策略
  • • docs/backend/CHECKLIST.md:门禁
  • • docs/backend/RISKS.md:风险
  • • docs/backend/DECISIONS.md:ADR
  • • docs/backend/REFERENCES.md:参考资料

前端:

  • • docs/frontend/PLAN.md:路线
  • • docs/frontend/PROGRESS.md:当前状态
  • • docs/frontend/DESIGN.md:产品气质和 UI 规范
  • • docs/frontend/IMPLEMENTATION_GUIDE.md:实现规则
  • • docs/frontend/TESTING.md:测试策略
  • • docs/frontend/CHECKLIST.md:门禁
  • • docs/frontend/RISKS.md:风险
  • • docs/frontend/DECISIONS.md:ADR
  • • docs/frontend/REFERENCES.md:参考资料

Reference

  • • 0xbug/Hawkeye – GitHub code leak monitoring project that inspired SkyRadar.

许可证

AGPLv3。详见 LICENSE


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Gh0xE9 Southseast Southseast《红队自动化企业敏感信息泄露搜集快速修复漏洞点》

评论:0   参与:  0