git泄露漏洞

漏洞概念及成因

Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。在协同开发过程中,工程师每次保存工作时,Git 都会创建一个提交,提交是某个时间点所有文件的快照。如果文件在一次提交到下一次提交之间没有更改,Git 将使用以前存储的文件。
文件夹 .git 是 Git 初始化后在当前目录生成的一个管理 Git 仓库的文件夹,这里包含所有Git 操作所需要的东西。
如果开发人员配置不当,可能会将 .git 文件夹直接部署到线上环境,这就引起了 git 泄露漏洞,我们可以利用这个漏洞直接获得网页源码等信息。

确定是否存在泄漏

可以通过各种目录爆破扫描工具扫描出目标网站存有 /.git 路径,当然也可以直接通过网页访问 /.git 目录,如果能访问就说明存在,也可以试着访问 /.git/head 文件,如果能下载也能推断存在 git 泄露漏洞。

获取泄露的源码

可以使用 GitHack 工具获取目标网站泄露的源码,GitHack 是一个 .git 泄露利用脚本,通过泄露的 .git 文件夹下的文件重建还原工程源代码。

使用GitHack进行扫描。
python GitHack.py+目标url+.git/

扫描完成之后,会回显生成的结果存储于哪个目录下,默认时 GitHack 的 dist 目录下,进入对应的目录,可以使用 git 命令执行相应的操作。

简要 git 命令

查看提交信息

git log

回滚到指定版本

git reset --hard 对应版本的commit

对比两次提交差异

git diff 版本名1 版本名2

查看当前stash

git stash list

恢复stash内容

git stash pop