CTF Web .git源码泄露实战详解|git-dumper工具完整复现
2026/6/25 19:01:14 网站建设 项目流程

一、漏洞原理

网站开发使用Git做版本管理,上线部署时未删除项目根目录隐藏的 .git 文件夹,服务器未配置访问拦截规则,攻击者可直接访问 ip:端口/.git/ 获取完整版本仓库,通过Git命令读取网页源码、历史提交记录,拿到注释、后台地址、flag等敏感信息。
本次靶场地址: http://180.76.235.121:33354 ,页面提示 git很好用!聪明的我当然用! ,直接暴露Git泄露漏洞。

二、环境前置准备

1. 安装Git Windows客户端

下载 Git-2.53.0.2-64-bit.exe 默认安装,安装完成后文件夹右键可打开 Git Bash Here 终端。

2. 安装git-dumper源码下载工具

git-dumper是Python编写的Git仓库导出工具,专门用于拉取泄露的.git目录,打开Git Bash执行安装命令:

pip install git-dumper


执行后出现 Requirement already satisfied 代表安装成功,输出的黄色urllib3版本兼容警告不影响工具运行,可直接忽略。

三、完整漏洞利用实操步骤

步骤1:切换工作目录(D盘存放源码)

cd /d

命令行前缀变为 Lenovo@MINGW64 /d 即切换完成。

步骤2:使用git-dumper拉取靶机Git仓库

复制命令后,在Git Bash黑框内鼠标右键粘贴执行:

git-dumper http://180.76.235.121:33354/.git/ ./git源码文件夹


终端持续输出 Fetching 代表正在拉取仓库文件,少量404报错属于正常现象,最后出现 Running git checkout 代表源码还原完毕。

步骤3:进入下载好的仓库文件夹

输入 ls 查看D盘文件,确认仓库文件夹名为 git源码文件夹 ,执行进入目录命令:

cd git源码文件夹


前缀出现 (master) 标识,说明当前处于Git仓库根目录。

步骤4:查看提交记录,判断仓库版本情况

bgit log


日志仅输出一条 init 初始化提交,代表仓库无历史版本,不能执行版本回滚命令 git reset --hard HEAD^ ,强行执行会抛出参数报错。

步骤5:查看完整提交源码,提取Flag(核心操作)

由于无历史版本,直接使用 git show 打印当前提交全部网页代码:

git show


终端输出 index.html 完整HTML源码,在页面注释中找到隐藏flag:
flag{92aa7e30-fa34-48e8-9696-0578940ee4d2}

四、实操高频报错踩坑汇总
1. bash: cd: git_source: No such file or directory
自定义文件夹名称与实际下载目录不匹配,先用 ls 命令查看当前目录所有文件,确认真实文件夹名称后再cd进入。
2. fatal: ambiguous argument 'HEAD^': unknown revision
仓库仅有1条初始化提交,不存在上一个历史版本,放弃回滚操作,直接使用 git show 读取完整源码。
3. No stash entries found.
仓库无暂存、未保存的临时文件, git stash pop 命令无任何作用,无需执行。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询