Git泄露

Git泄露

Git是分布式版本控制系统。参考文章Git作用描述
为什么Git会泄露开发人员在开发时,常常会先把源码提交到远程托管网站(如github),最后再从远程托管网站把源码pull到服务器的web目录下。因为.git文件时一个隐藏文件,如果一不小心把.git文件同样给提交,就造成此漏洞。利用.git文件恢复网站的源码,而源码里可能会有数据库的信息。

利用.git恢复文件原理

这一篇文章讲的不错,容易理解.git信息泄露漏洞-简明原理及利用方法
想要恢复文件分为俩步:

  • 在Git中commit后的文件都对应这一个hash值,找到hash即可打开文件
  • 打开文件访问 http://xxx.com/.git/object/9e/859e6e72aceb01362fd35df50628b1c96071f9即可打开文件
    9e859e6e72aceb01362fd35df50628b1c96071f9就是文件hash

GitHack找hash

首先有必要说以下hash值存在的位置

  • .git/refs/stash:用于保存 git 工作状态到 git 栈,在需要的时候再恢复。

先来了解以下操作。首先dirsearch目录扫描以下

  • python2 GitHack.py (url格式:http://xxx/.git)
    恢复Git文件然后在GitHack所在目录下的dist目录下得到恢复的文件。
  • git log:查看git日志
  • git reset --hard hash: 命令用于回退版本,可以指定退回某一次提交的版本。关于加不加hard区别,是否恢复工作区文件。加了–hard,我们才可以看到文件。git reset 加不加 --hard的区别彻底回退到某个版本,本地的源码也会变为上一个版本的内容,撤销的commit中所包含的更改被冲掉,相当于硬着路,回滚最彻底。如何使用git命令回滚到指定版本以及返回到新版本
  • cat filename: 查看文使用
  • git stash :备份当前工作区的内容,保存到git 栈中 ,回来再通过 git stash pop 取出来。
  • git stash show:显示做了哪些改动,默认show第一个存储,如果要显示其他存贮,后面加stash@{$num},比如第二个 git stash show stash@{1}
  • git stash pop:取出git 栈中的文件

题目练习

CTFHub练习

第一道题是:log。首先dirsearch扫描,然后Githack还原文件再到dist的目录下打开GitBash打开文件,git log查看日志,git reset恢复版本,ls查看目录,cat打开文件。
第二道题:stash。存储,这是有关git栈命令的。关于git stash和git stash pop的文章。首先dirsearch扫描,然后GitHack还原文件再到dist目录下打开GitBash,英文提示过文件在暂存区所以Git stash pop查看暂存区文件,cat读取文件。
第三道题:Index。首先dirsearch扫描,然后Githack还原文件再到dist的目录下打开GitBash打开文件,git log查看日志,git reset恢复版本,ls查看目录,cat打开文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值