一、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、配置文件、敏感逻辑等信息。


