MPZ-00/github-recon
GitHub: MPZ-00/github-recon
一款模块化的 GitHub OSINT 侦察与敏感信息泄露扫描工具,能从近二十个攻击面系统性地提取身份信息并检测泄露的凭证和敏感文件。
Stars: 0 | Forks: 0
# GitHub 侦察扫描器
模块化 Bash 工具,用于审计 GitHub 账户中暴露的私人身份数据、泄露的敏感信息以及公开资料全面范围内的敏感元数据。
## 许可证
MIT 许可证。版权所有 (c) 2026 MPZ-00。
## 检测内容
| 表面 | 扫描内容 |
|---------|----------------|
| **个人资料** | 真实姓名、公开电子邮件、雇主、位置、博客、Twitter 账号 |
| **代码仓库** | 描述中的电子邮件地址、敏感的仓库名称 |
| **提交事件** | 公开推送事件中的非 noreply 作者电子邮件 |
| **敏感文件** | `.env`、`credentials`、SSH 密钥、云配置以及其他 14 种模式 |
| **敏感信息模式** | AWS 密钥、GitHub token、Stripe、OpenAI、Slack、JWT、数据库 URL 等 |
| **Gists** | 敏感的文件名和 gist 描述中的电子邮件 |
| **标签** | 带有注释的 git 标签和标签消息中的标签者电子邮件 |
| **发布** | 发布正文中的电子邮件、敏感的资产名称 |
| **Issues** | issue 标题、正文和评论中的电子邮件 |
| **Pull 请求** | PR 正文和评论中的电子邮件 |
| **PR 审查** | 审查正文中的电子邮件 |
| **讨论** | 讨论正文和评论中的电子邮件(通过 GraphQL) |
| **Wikis** | wiki 内容(克隆的)中的电子邮件 |
| **Forks** | 复刻仓库提交中的作者电子邮件 |
| **组织仓库** | 组织拥有的仓库提交中的作者电子邮件 |
| **Actions** | 工作流运行中的提交作者电子邮件、敏感的 artifact 名称 |
| **GitHub Pages** | 从已发布的 Pages 站点抓取的电子邮件(深度为 2 的爬取) |
| **Packages** | GitHub Packages、npm 和 PyPI 注册表元数据中的作者电子邮件 |
| **深度扫描** | 通过 `gitleaks` 或模式 grep 进行完整的 git 历史记录扫描(需要 `--clone`) |
## 架构
```
github-recon.sh ← orchestrator: arg parsing + module dispatch
lib/
auth.sh ← gh CLI / GITHUB_TOKEN auto-detection
log.sh ← log levels: quiet | normal | verbose | debug
logging.sh ← compatibility shim (log_info → log_normal etc.)
api.sh ← api_get(), api_get_all() with rate-limit retry
config.sh ← shared env vars, ignore rules, EMAIL_REGEX
findings.sh ← emit_finding(), extract_emails()
modules/ ← Bash modules, one responsibility each
profile.sh repos.sh commit_emails.sh sensitive_files.sh
secret_patterns.sh gists.sh tags.sh releases.sh
issues.sh pull_requests.sh reviews.sh
forks.sh org_repos.sh wikis.sh deep_scan.sh
scanners/ ← Python scanners for GraphQL / complex APIs
discussions.py actions.py pages.py packages.py
reports/ ← JSON findings and Markdown reports (gitignored)
```
每个模块都是一个独立的 bash 脚本,它:
- 从 `lib/` 引入共享辅助函数
- 通过导出的环境变量继承配置
- 将 NDJSON 格式的发现结果写入 stdout
- 将进度/错误信息写入 stderr
## 系统要求
- `bash` 4+
- `curl`
- `jq`
- `git`
- `python3`(用于 `scanners/`)
可选:
- `gh` (GitHub CLI) — 首选的身份验证方式;自动检测
- `gitleaks` — 被 `deep_scan` 用于高保真度的敏感信息检测
## 身份验证
该工具按顺序自动检测可用的最佳身份验证方式:
1. **GitHub CLI** — 如果 `gh auth status` 通过,则使用 `gh auth token`
2. **`GITHUB_TOKEN` 环境变量** — curl 请求中的 bearer token
3. **未认证** — 可以工作,但速率限制为每小时 60 次请求
```
# 选项 1 — gh CLI (推荐)
gh auth login
./github-recon.sh
# 选项 2 — token
GITHUB_TOKEN=ghp_xxx ./github-recon.sh
```
## 用法
```
./github-recon.sh [options]
```
| 标志 | 描述 |
|------|-------------|
| `--clone` | 启用深度扫描(git clone + 历史记录) |
| `--email=ADDR` | 用于一致性检查的预期主要电子邮件 |
| `--log-level=LEVEL` | `quiet` \| `normal` \| `verbose` \| `debug`(默认值:`normal`) |
| `--status` | 已弃用,等同于 `--log-level=quiet` |
| `--ignore-file=PATH` | 从文件加载忽略规则 |
| `--ignore-repo=NAME` | 忽略特定的仓库(可重复使用) |
| `--ignore-pattern=PATTERN` | 忽略文件名模式(可重复使用) |
| `--ignore-secret-label=LBL` | 忽略特定的敏感信息类型(可重复使用) |
| `--help` | 显示帮助信息并退出 |
### 示例
```
# Basic scan
./github-recon.sh torvalds
# Verbose output
./github-recon.sh torvalds --log-level=verbose
# Deep scan (包含主要邮箱检查)
./github-recon.sh torvalds --clone --email=torvalds@linux-foundation.org
# 抑制已知 false positives
./github-recon.sh torvalds \
--ignore-repo=my-demo-repo \
--ignore-pattern=.env.example
# 安静模式 — 仅将最终 JSON 摘要输出至 stdout
./github-recon.sh torvalds --log-level=quiet | jq .
```
### 忽略文件
如果当前目录中存在 `.github-recon-ignore`,则会自动加载。
```
# 支持 Comments
repo:my-demo-repo
pattern:.env.example
secret:Password Assignment
my-demo-repo:.env
```
## 输出
发现结果将以 NDJSON 格式写入 `reports/-.json`:
```
{"module":"profile","severity":"high","type":"email_leak","target":"profile","pattern":"email","detail":"user@example.com","url":"https://github.com/user"}
```
Markdown 摘要表将写入 `reports/-.md`。
在 `--log-level=quiet` 模式下,最终的 JSON 摘要也会打印到 stdout:
```
{
"total": 12,
"by_severity": {"critical": 1, "high": 5, "medium": 4, "low": 2},
"findings": [...]
}
```
## 备注
- 旨在审计您自己的公开 GitHub 足迹。
- GitHub Search API 有速率限制;强烈建议使用带身份验证的请求。
- 发现结果仅为候选——在采取行动之前请手动验证。
- `scanners/` 仅需 Python stdlib + 无需第三方包。
标签:API安全, Bash, DevSecOps, ESC4, gitleaks, JSON输出, OSINT, 上游代理, 个人信息收集, 信息泄露, 实时处理, 密钥泄露, 对抗攻击, 应用安全, 敏感信息检测, 网络安全, 逆向工具, 隐私保护