WP001——source
时效性
2025年7月21日
题目来源
题目描述
Write Up
步骤一
1、打开题目网址
发现没有多余提示,直接用****dirsearch****扫描一下目录
也可以用其他的,比如“御剑”
在dirsearch的目录下打开 powershell 或者 cmd , 输入:
PYTHON dirsearch.py -u http://117.72.52.127:18684/
发现有flag文件,打开以后发现不对,有
.git 目录,git目录可能会存在代码的各个版本的保存记录,可能会存在信息
由于提示使用linux环境,使用 **
wget**将网站整个 git 目录和文件下载下来
wget -r http://117.72.52.127:18684/.git/
wget是一个命令行工具,用于从网络上下载文件,Linux自带。
-r:递归下载,可以下载整个网站或目录。
用 git 查看之前的版本(代码提交记录,更改历史),获得版本号,能明显看到有三个版本是有 flag 字符串的
git reflog
查看上述记录,就可以看到flag
参考文档
总结
上述题目的重点是,.git文件里面信息的挖掘,.git文件是源码泄露的一种,可以通过它来恢复之前的代码数据,但是.git还有一些隐藏的数据,对该文件的挖掘,是对信息泄露最大化利用的一种方式。
一、基础信息收集
-
恢复完整源码
-
工具:
GitTools、dvcs-ripper -
步骤:
# 使用 GitTools 下载完整仓库 ./dumper.sh http://target.com/.git/ ./git_dump ./extractor.sh ./git_dump ./extracted_code -
关键收获:完整项目源码、配置文件、注释中的敏感信息。
-
-
查看分支与标签
-
命令:
git branch -a # 查看所有分支 git tag # 查看版本标签 -
价值:发现未上线功能分支(如
dev、test)、预发布版本代码。
-
二、深度历史挖掘
-
分析提交历史
-
操作:
git log --stat # 查看提交历史及修改文件 git show <commit-id> # 查看具体提交内容 git log -p -S'password' # 搜索包含关键词的提交 -
敏感数据:
-
硬编码凭证(API Keys、数据库密码)
-
被删除但未清除的敏感文件(如
config.bak) -
注释掉的调试代码(如支付逻辑绕过)
-
-
-
恢复已删除文件
-
步骤:
git checkout <commit-id> -- path/to/deleted_file -
场景:恢复误删的配置文件(如
.env)或备份文件。
-
三、配置与环境信息
-
提取
.git/config-
关键内容:
- 远程仓库地址(可能含内部GitLab地址)
- 开发者用户名/邮箱(用于社工)
[remote "origin"] url = ssh://git@internal.gitlab.com/project.git # 内部地址!
-
-
钩子脚本分析(
.git/hooks/)-
检查
pre-commit、post-receive等脚本 -
风险点:脚本中可能含部署路径、服务器IP或硬编码凭证。
-
四、隐蔽数据挖掘
-
搜索暂存区(Index)内容
-
命令:
git ls-files --stage # 查看暂存区文件 git diff --cached # 对比暂存区与HEAD差异 -
意义:开发者可能暂存未提交的敏感文件。
-
-
扫描未跟踪文件(如
.gitignore例外)- 工具:
git-secrets或自定义脚本 - 目标:查找被错误纳入版本控制的文件(如
*.key、*.pem)。
- 工具:
五、扩展攻击面
-
利用
HEAD与引用日志-
操作:
git reflog show HEAD # 查看HEAD变更历史 -
用途:恢复开发者本地未推送的提交(如临时修复补丁)。
-
-
子模块泄露(
.gitmodules)-
解析文件获取子模块路径:
[submodule "lib"] path = lib url = https://github.com/private/lib.git # 可能指向内部仓库 -
价值:扩展攻击目标至关联仓库。
-
六、自动化工具链
-
推荐工具:
- GitHacker:支持增量下载/断点续传
- git-dumper:Python实现的完整下载工具
- TruffleHog:深度扫描提交历史中的密钥
七、高级利用技巧
-
Git 对象注入(当部分对象缺失时) 若
.git/objects/不完整,尝试通过哈希爆破恢复文件:# 使用 GitHacker 的哈希爆破模式 python GitHacker.py http://target.com/.git/ --url-fix --brute -
结合目录遍历 若存在路径遍历漏洞,尝试访问:
http://target.com/.git/../../../../etc/passwd