1.什么是版本控制系统
1.1代码的恢复、备份
- 修改仓库难以管理
- 整个工程直接打包,占用空间过多
1.2 Version Control System
1.3 发展阶段
-
版本管理
本地 VCS
-
协同开发
-
文件冲突?
- 自动合并不冲突的内容
- 标记冲突的内容
-
集中化的 VCS
CVCS
Centralized Version Control Systems- 代表
CVS
CVS Concurrent Versions System
SVN
- 代表
-
去中心化
-
分布式 CVS
Distributed Version Control System
代表- Github、Gitlab、码云
- Git Linus Torwalds BitKeeper
-
-
2.为什么Git会导致信息泄露
2.1 把私有仓库/隐私文件提交到了 github
2.2 部署项目的时候,不小心把 .git 文件一起打包进去,放到web网站的目录下
- .java
- .class
war
- .class
- .git有用的内容
- .git/logs/HEAD 存储了 git 的 log 信息,可以找到历史的 commit 项
- .git/index 缓存 git add 的文件,暂存区
- .git/refs/stash
- git stash
把代码存入缓存区
- git stash
- .git/refs/heads/master
记录了 master 的 commit 的hash - .git/objects/pack/.pac
3.Github搜索技巧
-
kali in:file
搜索文件中包含 kali 的代码 -
kali in:path
搜索路径中包含 kali 的代码 -
kali in:path,file
搜索路径、文件中包含 kali 的代码 -
shodan language:python
搜索关键字shodan,语言为 python 的代码 -
filename:config.php language:php
搜索文件名为 config.php,且语言为 php -
kali topics:>=5
搜索文件名为 config.php,且语言为 php -
kali size:<000
文件小于 1KB 的 -
kali stars:10..50
star 大于 10 小于 50 的
-
kali pushed:>2021-08-15
搜索在 2021 年 8 月 15 日之后提交的 -
kali pushed:2021-07-01..2021-08-01
搜索在此区间 -
kali created:>=2021-06-01
创建时间 -
kali pushed:<2021-08-01 -language:java
搜索在 2020 年 8 月 1 日前 push 代码且排除 java 语言
4. Git信息泄露利用方式
4.1 找到.git
- 目录扫描
- robots.txt
- 搜索引擎搜索
intitle:"Index of /.git"
4.2 把.git下载到本地
- https://github.com/BugScanTeam/GitHack
python GitHack.py xxx.com/.git/ - https://github.com/lijiejie/GitHack
- https://github.com/wangyihang/githacker
- https://github.com/WangWen-Albert/JGitHack
4.3 用git的命令获取内容
- git log
获取提交记录 - git reset --hard [log hash]
恢复到某个版本 - git diff
对比版本差异 - 工具
https://github.com/gakki429/Git_Extract
5. 案例
5.1 ctfhub
技能树 Web -- 信息泄露 --- Git 泄露 --- Log、Stash、index
5.2 buuctf
- 禁止套娃
- Mark loves cat