CTF-2020.6.12

.git文件泄露导致源码泄露

首先,关于git:分布式版本控制系统(版本控制:记录每次文件的改动,并支持协作编辑)

0x1 一些用语解释:

集中式:全部文件存在一个中央服务器中,需联网,修改时从中央服务器中取出修改完放回去。

分布式:各个电脑里都有完整的版本库,修改后需推送,安全性高,可以有一个中央服务器用来方便大家交换修改的版本。

版本库:仓库,目录,文件的修改删除git都可跟踪

工作区和暂存区:工作区就是自身电脑可看到的目录,暂存区在版本库中,将工作区的文件添加到暂存区(git add),然后将暂存区的所有文件添加到master(git commit)。master也是分支,分支的作用是上传未写完的代码后不会让未写完的代码影响别人。

0x2 泄露原理:

源码提交到远程托管网站后,从上面把源码pull到服务器时,忘记删除git文件。利用.git文件可以恢复网站的源码,源码里可能会有数据库信息。/使用git进行版本控制,对站点自动部署,配置不当会降.git文件夹直接部署到线上环境。

详细解释:

在一个目录中初始化后,会产生一个名叫.git的隐藏文件夹(版本库)

当开发时采用以下流程时:

1.初始化仓库 , 并将仓库托管在Coding或者Github上 , 便于远程协作/备份/部署
2.在本地进行网站开发 , 并定时提交commit , push到远程托管网站
3.当一个阶段的开发差不多的时候 , 需要远程登陆服务器 , 通过托管网站再将发行版网站pull到Web目录下(此时会将,git文件夹下载到服务器的web目录下)
4.网站正常运行

攻击者可以利用web目录下载Git文件夹,然后就可以利用储存的版本控制信息,完全恢复网站后台的代码和目录结构以及获取数据库信息等。

0x3 利用:

1、githack等:同构泄露的.git文件夹下的文件,还原重建工程源代码

2、爬虫爬取整个git目录

0x4 修复:

1、对.git目录的访问权限进行控制

2、在每次Pull后删除.git文件夹

0x5 利用场景实践:

git_extract下载:https://github.com/lijiejie/GitHack

cmd命令:git_extract.py http://xxxxx/.git/

可扫描出.git漏洞

点击后:

放到beyond compare(http://www.scootersoftware.com/download.php)里对比

仔细看差别:

flag{82efc37f1cd5d4636ea7cadcd5a814a2}

提交即可