1. 找到Git文件夹
- 泄露原因:部署项目时误将.git文件夹打包到web目录,导致版本控制信息暴露
- 危害:可能泄露源码、历史版本、配置文件等敏感信息
- 典型场景:CTF比赛中常见于Web题目,实际渗透中也存在此类漏洞
-
1)搜索方法
- 目录扫描:使用dirb等工具扫描网站目录,寻找.git文件夹
- robots.txt:检查robots.txt文件,可能包含禁止爬取的.git目录提示
- 搜索引擎:使用intitle:"Index of /.git"等语法在Google搜索公开泄露的.git目录
- 2)GitHack工具
- 工具选择:
- GitHack(Python版):https://github.com/BugScanTeam/GitHack
- GitHack(Java版):https://github.com/WangWen-Albert/JGitHack
- GitExtract:https://github.com/gakki429/Git_Extract
- 特点对比:
- GitHack依赖git命令,能还原历史版本
- GitExtract纯Python实现,自动解析各版本文件
- 基本用法
- 命令格式:python GitHack.py http://target.com/.git/(路径替换为扫描出.git路径,这里我使用kali自带的dirb工具进行爆破)
- 输出目录:下载内容保存在dist/目标域名_端口目录下
- 工作流程:
- 尝试直接克隆仓库
- 目录遍历克隆失败时尝试从缓存文件恢复
- 从commit记录中恢复历史版本
- 3)Git命令分析
- 关键命令:
- git log:查看提交历史,获取版本哈希值
- git reset --hard [hash]:恢复到指定版本
- git diff [hash1] [hash2]:比较版本差异
- CTF技巧:
- flag可能藏在历史版本或版本差异中
- 注意查看被删除的文件内容
-
应用案例
- 解题步骤:
- 启动题目环境获取目标URL
- 使用dirb扫描发现.git目录
- 用GitHack下载.git文件夹
- 分析git log发现"add flag"和"remove flag"提交
- 使用git diff比较版本获取flag
- 注意提交flag是从ctfhub开始完整内容