Git 源码泄露 && GitHack使用
Git源码泄露原理
开发者通过git对站点进行版本控制,但可能因为一些粗心大意或者配置上的一些原因,可能会把 .git 文件也纳入了版本控制,导致每次git推送内容到站点是顺便也把.git也推送到了站点目录下。那为什么.git文件被推送上去,就会出现源码泄露呢?因为在git系统中所有的数据都是存在.git文件下的,该文件下有五个文件夹:
- hooks : 用于存储shell脚本,当执行某些git指令后,会触发存储在该文件夹下指定的shell脚本
- info : 用于存储该仓库的信息
- logs : 用于记录分支提交的记录
- objects : key-value 数据库
- refs :用于记录每个分支的最新提交结点以及tags
在.git文件夹中,同样存在有一些文件,譬如HEAD、config、index等文件,其中HEAD文件用以记录当前仓库指向的项目提交结点,config文件中记录着仓库的配置信息。如果开发者失误把.git也推送上去了。那用Githack脚本工具即可完全恢复该文件夹内的内容。获取一些重要的信息,从而达到信息泄露的目的。
Git 的一些相关操作
当在Git官网下载安装好git后:
代码语言:javascript复制# 初始化 git仓库,会在当前文件下生成.git文件 && 克隆远程仓库
git init && git clone
# 查看每次推送的历史版本
git log
# 查看历史版本后,想恢复到某一个历史版本
git reset --hard 版本号
# 下载远程仓库的代码并合并 && 推送本地代码到仓库并合并
git pull && git push
# 添加文件到暂存区 && 将暂存区内容添加到仓库中
git add && git commit
GitHack 的使用
通过使用dirsearch工具扫描到有.git目录是就可以确认存在其源码泄露了,然后使用GitHack脚本工具进行下载还原.git中的内容。(Githack是基于python2,其版本需大于2.7.9。 dirsearch是基于python3,其版本需大于3.7)。
GitHack 下载地址:https://github.com/lijiejie/GitHack
CMD进入该工具的目录下后,使用命令运行:
python2 GitHack.py http://abc.com:80/.git/
若存在该漏洞,则会在运行结束后,在当前目录下生成一个文件夹,关于.git内的内容。通过git相关命令操作来回滚历史版本来获取相关信息。