用途
GitHacker 专注于 .git 目录泄露的完整恢复。它不仅用于获取源码,还能恢复 stash、所有分支/标签、reflog。开发者删除过的密码和调试代码往往藏在这些位置,因此适合对泄露的 .git 目录进行深度安全审计。
项目地址:https://github.com/WangYihang/GitHacker
主要能力
- 源码恢复
- Stash 恢复
- 所有分支恢复(通过暴力枚举)
- 所有标签恢复(通过暴力枚举)
- Reflog 恢复
- 在目标无目录列表(403)的情况下仍可工作
与其他工具对比(资料提供):
| 能力 | GitHacker | git-dumper | GitHack |
|---|---|---|---|
| 源码恢复 | ✅ | ✅ | ✅ |
| Stash 恢复 | ✅ | ✅ | ❌ |
| 所有分支 | ✅(暴力枚举) | ❌ | ❌ |
| 所有标签 | ✅(暴力枚举) | ❌ | ❌ |
| Reflog | ✅ | ✅ | ❌ |
| 无目录列表 | ✅ | ✅ | ✅ |
资料说明:git-dumper 适合快速拿源码;GitHacker 的 --brute 模式能覆盖更多分支和标签,适合深度审计。
使用方式
安装:
pip install GitHacker
# 或(若团队内已分发 f8x CLI——WgpSec 内部工具集,本仓库不含其源码与安装方式):
# f8x -install githacker
基本用法:
# 快速利用
githacker --url http://target/.git/ --output-folder result
暴力枚举分支/标签名(目标关闭目录列表时必须开启):
githacker --brute --url http://target/.git/ --output-folder result
批量目标(每行一个 URL):
githacker --brute --url-file websites.txt --output-folder result
Docker 用法(推荐):
远程 .git 目录可能被植入恶意内容(如 hooks 脚本),在 Docker 中运行更安全:
docker run -v $(pwd)/results:/tmp/githacker/results \
wangyihang/githacker \
--brute --output-folder /tmp/githacker/results \
--url http://target/.git/
恢复后审计流程:
GitHacker 恢复的目录是一个完整的 git 仓库,可以直接用 git 命令审计:
cd result/target/
# 1. 查看提交历史(重点找被删除的敏感信息)
git log --oneline --all
git log -p --all -S "password"
git log -p --all -S "secret"
git log -p --all -S "flag"
# 2. 查看所有分支(开发/测试分支常有敏感信息)
git branch -a
git checkout dev # 切到开发分支看看
# 3. 查看 stash(开发者暂存的修改)
git stash list
git stash show -p stash@{0}
# 4. 查看 reflog(找到被 reset 掉的提交)
git reflog
git show <commit-hash>
# 5. 搜索凭据
grep -rn "password\|secret\|token\|api_key\|flag{" .
适用场景
- 发现目标 /.git/HEAD 返回 200 时的 .git 泄露利用
- 目录列表开启(200)时直接利用
- 目录列表关闭(403)时使用 --brute 暴力枚举分支/标签
- 需要快速拿源码时也可使用 git-dumper
- 多个目标批量扫描时使用 --url-file websites.txt
决策树(资料提供):
发现 /.git/HEAD 返回 200?
├─ 目录列表开启(200)→ githacker 直接利用
├─ 目录列表关闭(403)→ githacker --brute(暴力枚举分支/标签)
├─ 需要快速拿源码 → git-dumper 也行
└─ 多个目标批量扫 → githacker --url-file websites.txt
限制
- 资料未提供收费、价格、平台支持范围等具体信息。
- 资料未提供除上述命令外的其他参数说明。
- 资料未提供 f8x CLI 的源码与安装方式(仅提及为 WgpSec 内部工具集)。
- 远程 .git 目录可能被植入恶意内容(如 hooks 脚本),建议在 Docker 中运行。