一、Git 泄露
在信息安全领域,.git 文件泄露是一种常见且危害较大的敏感信息泄露场景。它源于 Git 版本控制系统在项目中生成的 .git 目录被意外暴露在 Web 服务器上,攻击者可通过该目录获取项目的完整源代码、历史提交记录、配置文件等敏感信息。
1、.git 目录的作用与组成
Git 作为分布式版本控制系统,会在项目根目录生成 .git 目录,用于存储版本控制所需的所有元数据,包括:
- 版本历史:所有提交记录(
commits)、分支(branches)、标签(tags)等。 - 文件快照:项目文件的不同版本数据(存储在
objects目录)。 - 配置信息:仓库配置(
config)、当前分支指针(HEAD)、索引文件(index)等。
核心子目录及文件:
objects/:存储文件快照(blob 对象)、目录结构(tree 对象)、提交记录(commit 对象)等,是仓库数据的核心。refs/:记录分支、标签对应的提交哈希(如refs/heads/master指向主分支最新提交)。HEAD:指向当前所在分支的指针(如ref: refs/heads/master)。index:暂存区信息,记录待提交的文件状态。config:仓库配置,可能包含远程仓库地址、用户名等信息。
2、.git 泄露的成因
- 部署失误:开发或运维人员在部署 Web 项目时,未排除
.git目录,导致其被上传至生产服务器的 Web 根目录(如wwwroot、public等)。 - 权限配置不当:Web 服务器(如 Nginx、Apache)对
.git目录未做访问限制,允许外部直接访问。 - 目录遍历:服务器存在目录遍历安全风险时,攻击者可通过构造路径(如
../.git/HEAD)绕过限制访问.git内容。
3、.git 泄露的危害
- 源代码泄露:攻击者可还原项目完整源代码,分析业务逻辑,寻找 SQL 注入、XSS 等。
- 敏感信息暴露:历史提交中可能包含数据库账号密码、API 密钥、配置文件等敏感数据。
- 开发细节泄露:通过提交记录可了解开发习惯、项目架构,甚至获取内部开发文档。
- 供应链风险:若项目依赖第三方库,攻击者可能通过源码分析依赖组件的缺陷。
二、GitHack 工具
1、工具简介
当网站服务器意外泄露 .git 目录(如可通过 http://目标域名/.git 访问)时,GitHack 可通过解析 .git 目录下的版本控制文件(如 config、index、objects 等),还原出项目的完整源代码,包括可能包含的 flag、配置文件、敏感逻辑等信息。
项目地址:https://github.com/BugScanTeam/GitHack
注意:不要下错版本,GitHub 上有多个同名的 GitHack,下错了无法渗透成功。请确保使用 BugScanTeam 的版本。
2、下载安装
(1)下载安装 GitHack
GitHack 是一个 .git 文件泄漏利用脚本,它是一个.git 泄露利用脚本,通过泄露的.git 文件夹下的文件,重建还原工程源代码,可通过 Git 命令下载或者在官网下载源码。
① Git 命令下载
sudo git clone https://github.com/BugScanTeam/GitHack
② Web 页面下载
访问 GitHub 仓库页面下载源码。
(2)基本使用方法
进入到 GitHack 目录中,需要使用 python2 来运行脚本。
# 进入到目录文件夹
cd GitHack
GitHack 的使用方法中,必须存在目标 URL 这个参数:指定存在 .git 泄漏的网站 URL,需以 .git/ 结尾(若输入时未以 / 结尾,工具会自动补全)。例如:http://target.com/.git/ 是正确的格式。Githack 的使用方法如下所示,可快速利用 .git 泄露获取网站源代码。
# 使用方法
sudo python2 GitHack.py http://www.example.com/.git
其中 http://www.example.com/.git/ 是目标网站的 .git 目录 URL,执行该命令后,工具会尝试从目标 URL 还原 Git 仓库内容,还原后的文件会保存在当前目录下的 dist/ 目录中。
3、利用步骤
GitHack 工具可还原 .git 目录中的完整仓库,工具会自动从目标 .git 目录下载文件,还原后的项目存储在 dist/目标域名/ 目录中,包含完整源代码和版本历史,步骤如下所示。
# 安装 Git(工具依赖)
sudo apt install git # Ubuntu/Debian
# 克隆 GitHack 工具
git clone https://github.com/BugScanTeam/GitHack.git
cd GitHack
# 执行还原(目标为存在.git 泄露的 URL)
python GitHack.py http://目标域名/.git/
三、渗透实战
1、打开靶场
打开关卡,提示信息为'当前大量开发人员使用 git 进行版本控制,对站点自动部署。如果配置不当,可能会将.git 文件夹直接部署到线上环境。这就引起了 git 泄露安全风险。请尝试使用 BugScanTeam 的 GitHack 完成本题',提示本关卡可以利用.git 泄露进行渗透测试。点击打开题目,此时系统自动创建 Docker 环境,蓝色部分的 URL 地址就是靶场环境。
打开靶场 URL,页面提示

