一、什么是Git
git是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创作,于2005年以GPL发布。最初目的是为更好地管理Linux内核开发而设计。应注意的是,这与GNU Interactive Tools(一个类似Norton Commander界面的文件管理器)有所不同。
git最初的开发动力来自于BitKeeper和Monotone。git最初只是作为一个可以被其他前端(比如Cogito或Stgit)包装的后端而开发的,但后来git内核已经成熟到可以独立地用作版本控制。很多著名的软件都使用git进行版本控制,其中包括Linux内核、X.Org服务器和OLPC内核等项目的开发流程。
GitHub是一个通过Git进行版本控制的软件源代码托管服务,由GitHub公司(曾称Logical Awesome)的开发者Chris Wanstrath、PJ Hyett和Tom Preston-Werner使用Ruby on Rails编写而成。
二、一些“正常”的git操作
2.1、“正常”?
一个正常的项目结构如下:
├── config.php
├── controller
│ └── User.php
├── index.php
├── module
│ └── user.php
└── view
└── login.html
若将其上传至github上,需要进行如下操作:
1、增加ssh-key
参考此文章:http://www.jianshu.com/p/ddd3122cb351
2、在github上添加一个新的项目
点击上方导航栏的+按钮,选择下方的New repository
![](media/14993924478178/14999382844383.jpg)
然后在Repository name 处输入一个项目名称,最后点击Creat repository,就会跳转到你创建项目仓库的页面,至此你的项目仓库创建完毕.它的页面内容如下
![](media/14993924478178/14999383415535.jpg)
3、初始化git项目,这个命令会在项目目录下生成一个.git的目录,这里面存放的就是项目的版本库和git配置文件
git init
4、添加项目更新
git add *
5、提交项目更新
git commit -m "初始化项目"
6、建立远程仓库
git remote add origin https://github.com/xxxx/test111.git 【xxxx换成你的github用户名】
7、执行push,将本地更新的代码提交到github的仓库
git push -u origin master
以上的操作看起来毫无问题,但是最重要的信息也就可能因此而泄露
2.2、隐患
关于2.1中的一些隐患操作
- config.php文件中可能配置了数据库连接信息
- config.php文件中可能配置了一些第三方api的key
- config.php文件中可能配置了邮件配置信息
- mac系统下可能还会将.DS_Store文件进行上传
- …………
这些列举的隐患在github上随处可见,通常很多黑客,在信息收集阶段,就会从一些版本控制网站上去寻找各自泄露的信息,以此来达到入侵的目的。
三、信息泄露真实案例(截图、危害描述)
1、邮箱密码泄露案例
![](media/14993924478178/14999394113158.jpg)
可能造成的危害:
- 从邮箱里获取到了公司的内部文件
- 从邮箱里获取到了个人的信用卡账单地址
- 从邮箱里面获取到了个人注册的一些网站信息
- 利用邮箱进行对一些网站进行找回密码的操作
- …………
2、 一些api开发key的泄露案例
可能造成的危害:
- 利用短信接口进行垃圾短信攻击
3、 当成网盘使用上传敏感信息的案例
可能造成的危害:
- 个人信息造成泄漏
- 将公司的一些配置上传上去,可能会造成公司的数据泄漏
- …………
4、 网站源码泄露案例
可能造成的危害:
- 攻击者可以对网站的源码进行代码审计,从而找到黑掉网站的方法
- 源码中包含其他敏感信息,例如:邮箱、数据库等
- …………
5、 公司内部vpn账户密码泄露案例
可能造成的危害: - 攻击者利用vpn进入内网进行黑客攻击
- 内网敏感信息存在泄漏的风险
- 部署在内网的数据库存在脱裤的风险
- …………
6、 历史曝光过的信息泄露案例 - YY运维不当导致(可内网/jumserver/新机房交换机帐号密码等/其他重要敏感信息泄露)
- 京东商城某员工邮箱到1091名员工企业邮箱账号泄露(存在撞库和社工风险)
- bilibili安卓客户端源码泄露(2016年1月的版本)
- 自如网某漏洞涉及各种敏感信息(数据库配置/邮箱/mongoDB等)
- 百度移动游戏内部邮箱账号泄露
- 阿里巴巴少量内部敏感信息泄漏
…………
四、如何避免这些问题
- 代码中尽量不写敏感信息
- 使用.gitignore配置文件
- 重要信息不进行公开
…………
五、【附录】github 高级搜索技巧
基本搜索:
默认搜索是从master分支搜索代码
搜索语句不能有特殊字符如
. , : ; / \ ` ’ ” = * ! ? # $ & + ^ | ~ < > ( ) { } [ ].
高级搜索
- 按文件搜索
Keywords in:file
- 按照路径检索
Keywords in:path
- 按照语言检索
Keywords language:java
- 按照文件大小
Keywords size:>100
- 按照后缀名检索
Keywords extention:php
- 按照地域检索
Keywords location:beijing
- 按照是否被fork过
Keywords fork:true
- 从名字或者描述中匹配
Keywords in:name,description
- 按照创建时间
Keywords created:<2011-01-01
- 按照推送时间
Keywords pushed:<2013-02-01
- 按照用户(组织)来搜索
user:Keywords
- 按照标签(topic)来搜索
topic:Keywords
- 按照标签(topic)大于几来搜索
topics:>number
- 按照用户邮箱来搜索
Keywords in:email
- 按照登录名来搜索
Keywords in:login
- 按照真实名字来搜索
Keywords in:fullname
- 按照关键字搜索并加入组织的人
Keywords type:org
参考来源:
https://help.github.com/articles/searching-repositories/
https://github.com/search/advanced
https://help.github.com/categories/search/
https://zh.wikipedia.org/wiki/GitHub
https://zh.wikipedia.org/wiki/Git