代码版本控制 的 文件泄露

文件泄露

Git

什么是文件泄露
GitHub
.git                  # 攻击者可以通过。  .git 内部文件,能看到很信息
.svn
.DS_Store
.hg
.bzr
cvs
WEB-INF
网站备份,zip 、sql、rar、swp、phpinfo 


Github
Github是目前全球最热门的在线协作网站,大量的程序员都会在Github上分享自己的代码以及协力进行软件开发。但与此同时,部分的程序员出于各种原因而没有删除所分享代码中的重要敏感信息,而被黑客利用与攻击系统。


从代码内部可以获取到
1. 邮箱信息
2. SVN信息
3. 内部账号以及密码
4. 数据库连接信息
5. 服务器配置信息

 

真实典型案例

UC某业务导致敏感内部邮件信息泄露
https://wystatic.tuisec.win/static/bugs/wooyun-2015-091525.html

高德软件多个信息泄露,影响公司安全
https://wystatic.tuisec.win/static/bugs/wooyun-2015-094921.html

 

 

git 导致文件泄露
在运行 git init初始化代码库的时候,会在当前目录下面产生一个.git的隐藏目录,用来记录代码的变更记录等等。
在发布代码的时候,把.git这个目录没有删除,直接发布了。使用这个文件,可以用来恢复源代码。

访问 http://localhost/.git
可以通过 .git 文件内的信息
取到你的源代码 -> 数据库密码
-> 文件、sql


陌陌某重要应用源码泄露 (安全意识不到位)
https://wystatic.tuisec.win/static/bugs/wooyun-2014-086227.html


泄露的内容
1. 所有该项目的源代码
2. 私有仓库的地址
3. 私密的配置信息
4. 所有commiter的邮箱帐号信息
5. (可能)内部的帐号和密码


利用方法
https://github.com/lijiejie/GitHack

工具原理:
解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 )
去.git/objects/ 文件夹下下载对应的文件
zlib解压文件,按原始的目录结构写入源代码


修复漏洞

1. 删除.git文件
2. 通过apache/nginx来拒绝.git访问
3. 提高安全意识!

 

 

 

SVN 信息泄露
Subversion ,简称SVN。是一个开放源码的版本控制系统,
相对于的RCS、CVS,采用了分支管理系统,它的设计目标就是取代CVS。
互联网上越来越多的控制服务从CVS转移到Subversion。

svn同样在项目根目录下会创建一个名为.svn的隐藏文件夹, 包含了所有分支commit信息和代码记录.

 

错误的导出方式
导出结果带.svn文件夹的目录树
1. svn checkout http://路径 [本地目录全路径] --username 用户名
2. svn checkout svn://路径 [本地目录全路径] --username 用户名

 

案例
淘宝网某应用svn信息导致代码泄露
https://wystatic.tuisec.win/static/bugs/wooyun-2012-012665.html

 

手动敲代码 复现
wget -r --no-parent --mirror http://www.example.com/.svn
cd www.example.com && svn revert --recursive .


使用 Seay-Svn 工具复现
https://github.com/kost/dvcs-ripper

 

拿自己来测试 还好不成功 哈哈哈

 

 

修复
1. 设置SVN密码,并将匿名访问用户的权限设置为none。
2. 发布代码时使用svn export导出,而不要使用svn co检索,防止泄露目录结构。
3. 提高安全意识


代码
Apache 配置文件
<Directory ~ "\.svn">
Order allow,deny
Deny from all
</Directory>


Nginx 配置文件
location ~ ^(.*)\/\.svn\/ {
return 404;
}

 

 

 


DS_Store

.DS_Store是Mac下Finder用来保存如何展示 文件/文件夹 的数据文件,每个文件夹下对应一个。

如果开发/设计人员将.DS_Store上传部署到线上环境,可能造成文件目录结构泄漏,特别是备份文件、源代码文件。


案例
TCL某网站DS_Store文件泄露敏感信息
https://wystatic.tuisec.win/static/bugs/wooyun-2015-091869.html

利用工具
https://github.com/lijiejie/ds_store_exp

修复:
sudo find / -name ".DS_Store" -depth -exec rm {} \;

 


小众漏洞
.hg文件泄露
Mercurial 是一个 版本控制系统. 开发者可以用它来管理源代码.
hg在初始化代码库的时候,会在当前目录下面产生一个.hg的隐藏文件


利用工具
https://github.com/kost/dvcs-ripper

rip-hg.pl -v -u http://www.example.com/.hg/


修复:
删除.hg

 


.bzr

Bazaar-NG 是个分散式版本控制系统,旨在易于开发人员和最终用户的使用。分散式版本控制系统采用了 集市开发模型 ,可让人们通过互联网进行协作。如果使用 Bazaar-NG,您就可以向最喜欢的自由软件项目提交自己的分支,同时无需特殊权限。

利用工具:
https://github.com/kost/dvcs-ripper

 

 


CVS
TortoiseCVS 是一款项目管理工具,一般用在IT行业,有服务器版和客户端版,在客户机上装了CVS,能够从服务器上迁出数据 。

是Windows平台上最最简单最最方便的CVS工具,TortoiseCVS的特点就是完全结合到资源管理器的鼠标右键菜单中进行操作,异常简单和方便。

cvs的一个windows客户端程序,功能当然是实现cvs的一些操作。CVS是指并发版本系统(Concurrent Versions System)。

 

利用工具:
https://github.com/kost/dvcs-ripper
rip-cvs.pl -v -u http://www.example.com/CVS/


修复:
删除该文件

 

 

 

 

WEB-INF/web.xml

WEB-INF是Java的WEB应用的安全目录。
如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问


/WEB-INF/web.xml:Web应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则。
/WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非servlet class。
/WEB-INF/lib/:存放web应用需要的各种JAR文件,放置仅在这个应用中要求使用的jar文件,如数据库驱动jar文件
/WEB-INF/src/:源码目录,按照包名结构放置各个java文件。
/WEB-INF/database.properties:数据库配置文件。


案例
中国电信-wlan上网某节点web.xml可读取导致ldap数据库泄露
https://wystatic.tuisec.win/static/bugs/wooyun-2013-039809.html


修复:
禁止访问WEB-INF目录:location ~ ^/WEB-INF/* { deny all; }

 

 

网站备份
zip、sql、rar、swp
如果被人拿到了, 别人就可以获取到源码去分析你的代码漏洞

 

 

最后!

平时一定要提高安全意识,避免犯低级错误

posted @ 2019-05-08 15:30  H·c  阅读(359)  评论(0编辑  收藏  举报