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