zl程序教程

您现在的位置是:首页 >  其他

当前栏目

公司敏感信息收集-Git信息泄漏漏洞与GitHack使用方法

漏洞公司方法Git 信息 收集 泄漏 敏感
2023-09-14 09:05:18 时间


Git是一个开源的分布式版本控制系统,能够有效的实现对软件版本的控制。版本控制是软件研发过程中项目的开发与管理的标准做法,能够追踪项目从开始到结束的整个过程,对企业的研发技术团队来说,是团队协作的桥梁,有助于团队多人协同。 Git传送门

然而在代码发布的时候,存在操作不规范的情况下可能会将代码泄漏出去,这时候攻击者就可以利用泄漏的代码信息进行白盒代码审计,发现其中存在的漏洞。甚至有的代码中会存储服务器、邮箱、数据库的配置链接信息,那么攻击者在获得了配置文件中的数据库用户、尼玛信息后对数据库进行攻击,都会造成很严重的后果。

“.git”泄漏漏洞与危害

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

攻击者可以利用该漏洞下载git文件夹里的所有内容。如果文件夹内有敏感信息比如站点源码、数据库账户密码等,攻击者可能直接控制服务器。

.git目录

  • config - 包含一些配置选项
  • description - 仓库的描述信息,主要给gitweb等git托管系统使用
  • HEAD - 指定当前分支,映射到ref引用,能够找到下一次commit的前一次哈希值
  • hooks - 存放可在某些指令前后触发运行的钩子脚本(hook scripts),默认包含一些脚本样例
  • index - 这个文件就是我们前面提到的暂存区(stage),是一个二进制文件
  • info - 存放仓库的信息
  • objects - 存储所有Git的数据对象,对象的SHA1哈希值的前两位是文件夹名称,后38位作为对象文件名
  • refs - 存储各个分支指向的目标提交
  • branches - 还没发现有什么用处

Git信息泄露原理

  • 通过泄露的.git文件夹下的文件,还原重建工程源代码
  • 解析.git/index文件,找到工程中所有的(文件名,文件sha1)
  • 去.git/objects文件夹下下载对应的文件
  • zlib解压文件,按原始的目录结构写入源代码
  • (危害:渗透测试人员、攻击者,可以进一步代码审计,挖掘:文件上传,sql注入等安全漏洞)

GitHack的使用方法

GitHack是一个.git泄露利用测试脚本,通过泄露的文件,还原重建工程源代码。FreeBuf之前也有相关漏洞的报道,“万达、步步高等知名企业中枪”—>传送门
但是这个锅github表示不背(没穿裤子的事儿,我github为啥要背?)

工作原理:

  • 解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 )
  • 去.git/objects/ 文件夹下下载对应的文件
  • zlib解压文件,按原始的目录结构写入源代码

优点:

  • 速度快,默认20个工作线程
  • 尽量还原所有的源代码,缺失的文件不影响脚本工作
  • 脚本不需要执行额外的git命令,all you need is python
  • 脚本无需浏览目录

附:存在文件被gc打包到git\objects\pack的情况,可测试下看能否直接获取并解压这个文件,还原源代码

使用方式:GitHack.py http://www.openssl.org/.git/
在这里插入图片描述

在这里插入图片描述

如何修复

  • 对.git目录的访问权限进行控制
  • 在每次pull之后删除.git文件夹

GitHack传送门