git源码泄露问题

githack是什么

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

Git 源码泄露

开发人员会使用 git 进行版本控制,对站点自动部署。但如果配置不当,可能会将 .git 文件夹直接部署到线上环境,这就引起了 git 泄露漏洞,我们可以利用这个漏洞直接获得网页源码。

确定是否存在泄漏

想要确定是否存在这个漏洞,可以通过以下方式。首先是看看有没有提示醒目地指出 Git,如果有就考虑存在。如果没有也可以使用 dirsearch 工具扫描后台,如果存在则会扫描出 .git 目录如图所示。

常见问题

  1. githack只能在python2环境下运行,否则会出现

例题

攻防世界lottery

  1. 打开网页,让我们买彩票赚钱,随便买一下

  2. 赚够足够的钱,才能够买flag

  3. 用dirsearch扫一下后台,发现有git

  4. 或者用御剑扫以下后台,发现robot协议文件,发现禁用git,很可疑,判断是git源码泄露

  5. 用githack扫描url,把文件都下载下来

    python githack.py URL
  6. 拼接githack.py的路由时,要到/.git,因为.git隐藏文件中是所有源码,不能只拼接到根目录,因为不在根目录下

  7. 打开其中的 “api.php” 文件审计代码,注意到这里有个 buy() 函数,这个是我们在网页买彩票会调用的函数。其中我们看到 numbers 这个变量是我们能操作的,函数会以数组的形式提取每位数字。

  1. 接收data变量是通过file_get_contents(‘php://input’),并进行json_decode,我的理解是和golang中接收后用unmarshal进行解析一样
  2. file_get_contents(‘php://input’)和$_POST在接收变量值的方面没有什么不同,都可以通过burp进行传入值,但是在接收格式的方面不同
  3. file_get_contents(‘php://input’)不能接收curl post过来的数组,用file_get_contents是为了接收json字符串,$_POST为了接收一维数组或&拼接的标准格式的键值对字符串
  4. 当请求data变量中的action参数为buy时,才会执行buy函数并传入data变量
  5. 才能对numbers值进行匹配
  6. 由于随机变量是数字,因此我们可以使用 true 来满足比较,但是我们显然不能在输入框输入 7 个 “true”。因此我们考虑修改数据包,通过抓包发现数据的传输是通过传一个映射来上传的。
  7. 因此抓包之后修改 numbers 变量为一个数组,其中的 7 个变量都是 true。放包之后就能够快速赚钱了,赚够钱后购买得到 flag
{"action":"buy","numbers":[true,true,true,true,true,true,true]}

攻防世界mfw

  1. 打开后在每个标签中查看
  2. 查看源代码发现有个跳转到flag的超链接被注释掉了,但是不允许修改,我直接改跳转到contact的超链接为flag
  3. 但是在flag标签内什么也没有发现
  4. 在上一张图片中有两个词,git和php,猜测是git源码泄露,用dirsearch跑一跑,真的发现了很多.git文件

  1. 用githack去跑,看看能不能下下来一些.git下的源码,发现在.index的开头找到了php源码

  2. 其中assert()函数会将括号中的字符当成代码来执行,并返回true或false,strpos()函数会返回字符串第一次出现的位置,如果没有找到则返回False

  3. 于是重心就放在file变量中,发现file变量是用我们输入的page变量拼接而成的,而且没有任何的过滤,我们可以在这段输入的字符中插入system函数来执行系统命令

  4. 注意到调用file时用的单引号和括号来限制file的范围
    于是可以构造url为

    page=a ') or system("cat templates/flag.php");//

ctfshow.web7

  1. 考察git代码泄露,直接访问url/.git/index.php
  2. git源码泄露一般在根目录下/.git/文件夹下找

直接获取-CMS识别平台-云悉指纹识别平台

自行查看

  1. 看网页页脚、图片、版权信息位置有没有透露信息
  2. 获得搭建的程序名,并下载获取到源码

云悉指纹识别平台

  1. 不是百分百可以获取到,自研等都无法获取,因为不是用的开源CMS
  2. 键入域名
  3. 但是目前还没有注册能力,库鲁西

备份文件泄露

  1. 在网站/www/html目录下备份文件会有备份文件泄露风险
  2. 不只是在/www/html目录下,这是PHP_study搭建的,也可以是其它的搭建网站的目录下打成zip/gz压缩包备份的
  3. 任意下载,只要没有限制目录跨级就可以
  4. 有一些可能会限制跳到上级 ../ 的限制