🌟想了解其它网安工具?看看这个:[网安工具] 网络安全工具管理 —— 工具仓库 · 管理手册
0x01:GitExtract 工具简介
GitExtract 是一款专注于 Git 仓库数据恢复与泄露检测 的 Python 工具,主要用于从 远程网站(存在 .git 目录泄露漏洞) 或 本地 .git 目录 中自动化提取完整版本历史及元数据。
与传统 Git 工具不同,它完全基于 Python 实现,无需依赖 Git 命令,能够深度解析 Git 内部文件结构(如 objects、logs、refs 等),恢复包括缓存文件、各分支提交版本、暂存内容、日志记录、配置信息等关键内容,并以 filename.sha1[:6]
格式命名文件以区分版本。
0x02:GitExtract 使用教程
注意:该工具的使用需要安装 Python 环境,笔者运行的环境是 Python 2.7.18
GitExtract 工具获取
0x0201:GitExtract 工具安装
首先,从笔者上面提供的地址下载 GitExtract 安装包到本地,并进行解压,解压后的目录格式如下(笔者使用的是 Kali 系统,读者可以在 Windows 系统上下载后上传到 Kali 中):
如果你本机存在 Python 2 环境,那么,恭喜你,GitExtract 已经安装完成了 😊。
你可能会疑问,笔者是咋知道要用 Python 2 的,如果你用 Python 3 运行脚本它会有下面这个报错:
这个是区分 Python 3 与 2 的一个很 Easy 的地方,同样都是输出语句,不同版本格式都略有差别:
# Python 2 的输出格式
print "123"
# Python 3 的输出格式
print("123")
如果你拿 Python 3 来运行,它就会发现输出语句没有被括号包裹,它就会给你报错。这也是为啥笔者要用 Kali 运行,因为 Kali 内置了 Python2 和 Python3 我们就能省去下载的步骤。
0x0202:GitExtract 工具使用
GitExtract 的使用可以分为两种情况,一种是本地的,一种是在线的:
python git_extract.py http://example.com/.git/ # 一个存在 .git 泄露的网站
python git_extract.py example/.git/ # 一个本地的 .git 路径
笔者本地恰巧有一个被 Git 管理起来的项目(下面就是个演示,模拟一下真实的环境):
如上,可以看到,我泄露了一个 .git
文件夹,我们可以尝试点进去看看:
如上,是可以直接查看的,那么此时,我们只要回到 Kali 上,通过 GitExtract 运行下面这个命令,我们就可以通过 .git
文件夹还原笔者当前的这个项目:
python2 git_extract.py http://172.16.0.1/.git/
运行完后,你本地就会多一个以目标 IP 命名的文件夹,里面就是工具还原出来的项目源码:
然后你就往项目里找找,如果有配置数据库的话,你是不是就能直接拿到账号密码了:
这个工具咋说呢?它其实没能完全恢复出笔者的项目,还是遗漏了不少的,笔者本地有好几条分支,它就恢复出了我当前本地工作的那个分支,其它几条分支它都没恢复出来(不知道是不是笔者本地的 Python 服务器太烂了的原因,所以总体下来,感觉一般)。