1. GitHack工具简介与实战价值第一次接触GitHack是在去年的高校CTF比赛中当时遇到一个靶场题目提示检查版本控制信息我花了三小时手动下载.git/objects文件结果队友用GitHack两分钟就拿到了完整源码。这个工具本质上是个Python脚本专门用于自动化下载存在.git目录泄露的网站源码。它的工作原理很有意思——就像玩拼图游戏通过解析.git/objects目录下的碎片化文件还原出完整的项目代码树。在实际渗透测试中我遇到过至少二十次.git泄露案例。最典型的是某次企业授权测试发现他们的测试环境网站居然完整暴露了.git文件夹。用GitHack下载代码后直接发现了数据库硬编码凭证和未授权API接口。这种漏洞之所以危险是因为.git目录可能包含完整的项目历史版本开发者注释中的敏感信息被删除但未彻底清理的配置文件数据库连接字符串等机密数据2. Windows环境准备避坑指南2.1 Python2环境配置虽然现在Python3已是主流但GitHack仍需要Python2.7环境。我推荐使用官方最后发布的2.7.18版本下载地址在Python官网的历史版本页面。安装时务必勾选Add python.exe to Path这是后续能直接调用python命令的关键。常见问题排查如果cmd输入python提示不是内部命令需要手动添加环境变量右键此电脑→属性→高级系统设置→环境变量→在Path中添加C:\Python27和C:\Python27\Scripts遇到pip无法使用时可以运行python -m ensurepip --default-pip进行修复32位和64位系统要选择对应版本混用会导致依赖库安装失败2.2 Git安装的特殊要求很多人以为随便装个Git就行其实有讲究。必须使用Git for Windows的便携版(MinGit)而不是带GUI的完整版。我推荐下载地址来自GitHub官方仓库版本选择2.40.0以上。安装时注意解压到GitHack同级目录下的git文件夹将git\cmd添加到系统Path变量测试时运行git --version应显示版本号而非报错3. GitHack部署全流程详解3.1 工具获取与解压技巧直接从GitHub下载最新版GitHack时建议不要点Download ZIP而是用git clone命令git clone https://github.com/lijiejie/GitHack.git这样能确保获取到完整的.git目录结构。解压位置我习惯放在C:\PentestTools下与其它安全工具集中管理。3.2 关键配置调整打开GitHack.py文件有几个参数需要特别注意# 修改下载线程数默认5 THREADS 3 # 设置超时时间秒 TIMEOUT 10 # 启用调试模式首次使用建议开启 DEBUG True在Windows下特别要检查第42行左右的路径拼接代码确保使用的是os.path.join()而不是硬编码的Linux风格斜杠。4. 实战漏洞挖掘演示4.1 目标识别技巧如何快速发现.git泄露除了常规的/.git/HEAD访问测试我常用组合方法使用dirsearch扫描python dirsearch.py -u http://target.com -e git检查响应头curl -I http://target.com/.git/config观察文件大小正常.git/HEAD应返回23字节4.2 完整攻击链示例假设发现目标http://vuln-site.com存在泄露操作流程如下cd C:\PentestTools\GitHack python GitHack.py http://vuln-site.com/.git/运行后会看到类似这样的进度输出[] Fetching .git/index (200 OK) [] Fetching 8a/3d1f5c6... (200 OK) [] Reconstructed admin/config.php下载完成的代码会保存在以目标域名命名的文件夹中。重点检查配置文件*.config, *.env数据库操作类文件权限验证相关的include文件5. 常见问题解决方案5.1 证书错误处理当目标使用HTTPS时可能遇到SSL错误有两种解决方式修改GitHack.py第89行添加import ssl ssl._create_default_https_context ssl._create_unverified_context或者改用HTTP协议如果支持5.2 文件下载不全问题我遇到过的典型情况包括网络波动导致部分对象下载失败重新运行脚本会自动续传服务器限制频率调整THREADS参数为1-2文件权限问题尝试在URL后添加/.git/或/%2egit/6. 防御建议与法律边界从防御角度运维人员应该在Nginx配置中添加location ~ /\.git { deny all; }定期使用git-secrets扫描历史提交部署前运行git clean -xdf在CTF比赛中使用GitHack是完全合法的但在真实环境中务必获得书面授权。去年某公司就因员工擅自测试.git泄露导致法律纠纷。建议在授权书中明确测试范围和工具列表。
实战演练:在Windows平台部署GitHack,高效挖掘.git泄露漏洞【CTF/渗透测试/代码审计】
1. GitHack工具简介与实战价值第一次接触GitHack是在去年的高校CTF比赛中当时遇到一个靶场题目提示检查版本控制信息我花了三小时手动下载.git/objects文件结果队友用GitHack两分钟就拿到了完整源码。这个工具本质上是个Python脚本专门用于自动化下载存在.git目录泄露的网站源码。它的工作原理很有意思——就像玩拼图游戏通过解析.git/objects目录下的碎片化文件还原出完整的项目代码树。在实际渗透测试中我遇到过至少二十次.git泄露案例。最典型的是某次企业授权测试发现他们的测试环境网站居然完整暴露了.git文件夹。用GitHack下载代码后直接发现了数据库硬编码凭证和未授权API接口。这种漏洞之所以危险是因为.git目录可能包含完整的项目历史版本开发者注释中的敏感信息被删除但未彻底清理的配置文件数据库连接字符串等机密数据2. Windows环境准备避坑指南2.1 Python2环境配置虽然现在Python3已是主流但GitHack仍需要Python2.7环境。我推荐使用官方最后发布的2.7.18版本下载地址在Python官网的历史版本页面。安装时务必勾选Add python.exe to Path这是后续能直接调用python命令的关键。常见问题排查如果cmd输入python提示不是内部命令需要手动添加环境变量右键此电脑→属性→高级系统设置→环境变量→在Path中添加C:\Python27和C:\Python27\Scripts遇到pip无法使用时可以运行python -m ensurepip --default-pip进行修复32位和64位系统要选择对应版本混用会导致依赖库安装失败2.2 Git安装的特殊要求很多人以为随便装个Git就行其实有讲究。必须使用Git for Windows的便携版(MinGit)而不是带GUI的完整版。我推荐下载地址来自GitHub官方仓库版本选择2.40.0以上。安装时注意解压到GitHack同级目录下的git文件夹将git\cmd添加到系统Path变量测试时运行git --version应显示版本号而非报错3. GitHack部署全流程详解3.1 工具获取与解压技巧直接从GitHub下载最新版GitHack时建议不要点Download ZIP而是用git clone命令git clone https://github.com/lijiejie/GitHack.git这样能确保获取到完整的.git目录结构。解压位置我习惯放在C:\PentestTools下与其它安全工具集中管理。3.2 关键配置调整打开GitHack.py文件有几个参数需要特别注意# 修改下载线程数默认5 THREADS 3 # 设置超时时间秒 TIMEOUT 10 # 启用调试模式首次使用建议开启 DEBUG True在Windows下特别要检查第42行左右的路径拼接代码确保使用的是os.path.join()而不是硬编码的Linux风格斜杠。4. 实战漏洞挖掘演示4.1 目标识别技巧如何快速发现.git泄露除了常规的/.git/HEAD访问测试我常用组合方法使用dirsearch扫描python dirsearch.py -u http://target.com -e git检查响应头curl -I http://target.com/.git/config观察文件大小正常.git/HEAD应返回23字节4.2 完整攻击链示例假设发现目标http://vuln-site.com存在泄露操作流程如下cd C:\PentestTools\GitHack python GitHack.py http://vuln-site.com/.git/运行后会看到类似这样的进度输出[] Fetching .git/index (200 OK) [] Fetching 8a/3d1f5c6... (200 OK) [] Reconstructed admin/config.php下载完成的代码会保存在以目标域名命名的文件夹中。重点检查配置文件*.config, *.env数据库操作类文件权限验证相关的include文件5. 常见问题解决方案5.1 证书错误处理当目标使用HTTPS时可能遇到SSL错误有两种解决方式修改GitHack.py第89行添加import ssl ssl._create_default_https_context ssl._create_unverified_context或者改用HTTP协议如果支持5.2 文件下载不全问题我遇到过的典型情况包括网络波动导致部分对象下载失败重新运行脚本会自动续传服务器限制频率调整THREADS参数为1-2文件权限问题尝试在URL后添加/.git/或/%2egit/6. 防御建议与法律边界从防御角度运维人员应该在Nginx配置中添加location ~ /\.git { deny all; }定期使用git-secrets扫描历史提交部署前运行git clean -xdf在CTF比赛中使用GitHack是完全合法的但在真实环境中务必获得书面授权。去年某公司就因员工擅自测试.git泄露导致法律纠纷。建议在授权书中明确测试范围和工具列表。