(1)下载git文件
- 使用linux系统的wget命令下载
wget -r <ip:port>/.git
其中-r参数是递归下载,.git文件下的所有文件 - githack
开源工具 https://github.com/lijiejie/GitHack
使用命令:
python3 GitHack.py http://target/.git/
可以自动解析回复仓库源码 - git-dumper
开源工具 https://github.com/arthaud/git-dumper
使用命令
python3 git_dumper.py http://target/.git/ ./source
同样自动解析还原仓库
(2)git文件结构解析
- HEAD:指向当前分支的指针。
- config:存储仓库的配置信息。
- description:用于描述仓库的简要信息,通常只在裸仓库中使用。
- hooks:存放各种客户端或服务器端的钩子脚本,可以用来执行特定操作(如提交前的检查等)。
- info:存储一些额外的配置信息,例如排除文件列表(exclude)。
- objects:存储所有的数据对象(如提交对象、树对象和Blob对象)。
- refs:存储分支、标签等的引用信息。
通过泄露的git文件,可以还原以下敏感信息: - 当你的网站根目录下存在 .git 文件夹,并且该文件夹被错误地暴露在公网上时,攻击者就可以通过访问 .git 文件夹获取到你的项目代码、提交记录、分支信息等等敏感信息。
- 访问源码:攻击者可以下载 .git 目录,并还原出完整的源码,包括可能敏感的配置文件、数据库凭据等。
- 获取历史版本:攻击者可以查看项目的历史提交记录,找到敏感信息,例如在历史版本中意外提交的密码。
- 分析开发历史:攻击者可以分析提交日志、分支结构等,了解开发流程和关键变更点,甚至发现潜在的漏洞。
(3)常用的git命令
- 查看日志
git log或者git reflog - 查看分支详细
git checkout ;
ls;
cat ;
或者
show - 强制回退代码版本
git reset --hard - 查看临时保存区
git stash list
git stash show -p(查看具体内容) - 查看tag标签
git tag
查看tag内容:git show - 查看所有分支
git branch -a - 查看忽略文件
cat .gitignore