git信息泄露漏洞
当前大量开发人员使用git进行版本控制,对站点自动部署。如果配置不当,可能会将.git文件夹直接部署到线上环境。这就引起了git泄露漏洞。
危害
攻击者可以利用该漏洞下载git文件夹里的所有内容。如果文件夹内有敏感信息比如站点源码、数据库账户密码等,攻击者可能直接控制服务器。
Git介绍
Git作为大家熟悉的,深受欢迎的版本控制工具,和其他同类工具有很多不同之处:
- Git始终保存快照而不是文件差异。
- 任何数据存储前始终使用SHA-1计算校验和,保证内容完整性。
- 使用分布式仓库设计,让大多数操作都在本地进行,保证了使用效率。几乎所有操作都是向数据库增加数据,提交之后就很难丢失数据。它的本质更像一个内容寻址(content-addressable)文件系统,并在此之上提供了一个版本控制系统的用户界面。
Git 有三种状态,你的文件可能处于其中之一:已修改(modified)、已暂存(staged)、已提交(committed)。由此引出三个逻辑区域,他们和文件状态以及部分对应操作的关系如下图。
Git对象
在Git系统中有四中类型的对象,所有的Git操作都是基于这四种类型的对象。
- “blob”,这种对象用来保存文件的内容。
- “tree”,可以理解成一个对象关系树,它管理一些"tree"和“blob”对象。
- “commit”,指向一个"tree",它用来标记项目某一个特定时间点的状态。它包括以下关于时间点的元数据,如时间戳、最近一次提交的作者、指向上次提交、
- “tag”,给某个提交增添一个标记。
git对象之间的个关系如下图