git 源码泄露学习与题目练习

git 源码泄露学习与题目练习

——

Git

是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

在创建一个项目时,会在本地用 git bash 初始化一个文件,而文件夹内就会生成一个 .git 文件。
就是这么个文件,可能能够被攻击者利用,造成 git 源码泄露。
在这里插入图片描述

生成的 git 文件像这样。
在这里插入图片描述

先了解一下这些不同文件的作用

hook:存放一些sheel的地方。
info:存放仓库的信息
object:存放所有git对象的地方
refs:存放提交hash的地方
config:github的配置信息
description:仓库的描述信息,主要给gitweb等git托管系统使用
HEAD:映射到ref引用,能够找到下一次commit的前一次哈希值

——

git 信息泄露原理

  • 可以通过泄露的 .git 文件夹下的文件,还原重建工程源码。

  • 解析.git/index文件,找到工程中所有的: (文件名,文件sha1)

  • 去.git/objects/文件夹下载对应的文件

  • zlib解压文件,按原始的目录结构写入源代码。

  • 渗透测试人员、攻击者,可以进一步审计代码,挖掘,文件上传,SQL注射等安全漏洞。

在 Windows 环境下
如果已经知道了 .git 文件的路径,可以利用工具 GitHack 下载到 git 文件夹里的所有内容。

在 Linux 环境下
自带了 wget 文件下载工具,在命令行下执行命令即可下载文件。

GitHack 下载
https://github.com/goodricc/GitHack

就是一个 python 脚本,下载后命令行进入此目录即可执行命令。
为了方便可直接创建 cmd 快捷方式把起始位置设置为文件路径,打开就可以直接输入命令了。

GitHack 需要 python2 的环境,并且 python2 的版本需要在 2.7.9 以上,不然可能显示类似这样的报错:

AttributeError: "module" object has no attribute "_create_unverified_context"

在这里插入图片描述
在这里插入图片描述

GitHack是一个.git泄露利用脚本,通过泄露的.git文件夹下的文件,重建还原工程源代码。

当前大量开发人员使用git进行版本控制,对站点自动部署。 如果配置不当,可能会将 .git 文件夹直接部署到线上环境。这就引起了git泄露漏洞。

githack 使用的一般命令格式:

GitHcak.py http://xxxxxxxx/.git

——
——

git 泄露题目练习

bugku web40

题目描述:我哥说渗透只用 Linux 环境。
在这里插入图片描述

打开环境,页面上没有什么消息。
F12 源代码中可以看到注释中有一个 flag ,但提交之后发现是一个假 flag 。
前面那个 flag 的内容可以看出来经过了 base64 编码,解码之后提交仍然是一个假 flag 。
在这里插入图片描述

页面中找不到其它信息了,再看看题目描述提示用 Linux 环境。
(理论上 Windows 环境下的方法感觉也是可以解决的)
其实感觉还是不知道如何下手。
尝试扫一扫后台,Linux 用 dirb 命令扫描到 .git 目录。
在 Windows 下用后台扫描工具如果字典里 含有 ‘ git ’字符也是可以扫出来的。
在这里插入图片描述

扫到 git 目录之后,了解到这是关于 git 泄露的题目。
经过尝试,Windows 下应该是做不了这题,因为在用 GitHack 想把文件都下载下来之后,发现只有两个没什么用的文件,里面没有啥信息。
进入文件执行命令也告诉了我们此仓库不存在,即没有把仓库里的文件都下载下来。
在这里插入图片描述

那接下来就只能用 Linux 系统了。
在命令行执行命令:

wget -r http://114.67.246.176:19619/.git

下载完后显示下载了大概五十多 M 的文件。
并且已经可以看到这个文件夹了。
右键这个文件夹,在此文件夹上打开命令行。
在这里插入图片描述

执行命令:

git reflog

得到这个仓库的操作日志。
在这里插入图片描述

已经得到了每个操作日志,就一个个尝试查看每次操作 cmmit 的内容:

git show commit_id

经过测试,我这里在版本号 40c6d51 里找到了正确的 flag 。
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Goodric

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值