公司敏感信息收集-Git信息泄漏漏洞与GitHack使用方法
文章目录
-
- “.git”泄漏漏洞与危害
- Git信息泄露原理
- GitHack的使用方法
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传送门