公司敏感信息收集-Git信息泄漏漏洞与GitHack使用方法
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文件夹
相关文章
- 反射型xss解决方法,增加过滤器,防止反射型 XSS攻击漏洞
- Portswigger 文件上传漏洞
- OpenSSL 修复了两个高危漏洞
- Spring Cloud Gateway远程代码执行漏洞(CVE-2022-22947)
- DVWA漏洞演练平台 - SQL注入
- Java堆栈溢出漏洞分析
- 漏洞分析丨cve20144113
- 3D版画图程序出现远程代码执行漏洞 微软已紧急发布更新进行修复
- #新闻拍一拍# 美土安全部发出罕见紧急警告:Windows 存在“严重”漏洞
- 代码审计 | Discuz最新版代码执行漏洞
- 【漏洞预警】潜伏11年的Linux内核提权漏洞曝光
- Linux 漏洞提权:实现有效的安全防御(linux漏洞提权)
- Linux后门入侵检测工具,附bash漏洞最终解决方法
- mssql 注入漏洞的威胁危害及如何提升权限(mssql 注入 权限)
- 开发者福音:谷歌发布安全项目 Project Wycheproof,自动检测加密库漏洞