目录
描述
源代码泄露一般由于敏感目录被扫描,导致直接下载网站源码查找敏感信息。如
- .git导致源码泄露。
- .DS_store文件导致源码泄露
- .svn文件导致敏感信息泄露
1 Git源码泄露
什么是Git:
git是一个版本控制工具,可以高效便捷地管理大大小小的项目版本。通俗点来说,就是一个项目或者说工程有多个人一起干,这个项目里每个人都有可能都拿同一文件了来编辑,但是这就产生了问题,到底怎么协同项目里面的人的所编辑的文件,怎么更新项目呢?这时就有了像git(版本控制工具)这样的东西了来做这种事情。
什么是github:
百度百科上的定义是:面向开源以及私有软件项目的代码托管平台,只支持git 作为唯一的版本库格式进行托管,故名GitHub。GitHub是一个代码托管云服务网站,帮助开发者存储和管理其项目源代码,且能够追踪、记录并控制用户对其代码的修改。甚至可以把它当作存储代码等的网盘,用来存储任何东西。
Github和Git,是什么关系?
GitHub不等同于Git,二者完全是不同物,不能搞混,类似地,捋一捋java与javascript、周杰与周杰伦的关系,或许你能从中领悟到一些真谛。Git只是一个命令行工具,一个分布式版本控制系统。正是它在背后管理和跟踪你的代码历史版本,好比一个时光机,让你在代码出错时不至于手忙脚乱,能快速回退之前的历史版本。GitHub是一个代码托管网站,背后使用Git作为版本管理工具(而非svn)。主要服务是将你的项目代码托管到云服务器上,而非存储在自己本地硬盘上。
Git源码泄露
了解了上面的,那这个就比较好理解了。当前大量开发人员使用git进行版本控制,对站点自动部署。在执行git init初始化目录的时候,会在当前目录下自动创建一个.git目录,用来记录代码的变更记录等。开发人员在开发时,常常会先把源码提交到远程托管网站(如github),最后再从远程托管网站把源码pull到服务器的web目录下,如果忘记把.git文件删除,就造成此漏洞。利用.git文件恢复处网站的源码,而源码里可能会有数据库的信息。Git信息泄露的危害很大,渗透测试人员、攻击者,可直接从源码获取敏感配置信息(如:邮箱,数据库),也可以进一步审计代码,挖掘文件上传、SQL注射等安全漏洞。
Git是一个可以实现有效控制应用版本的系统,但是在一旦在代码发布的时候,存在不规范的操作及配置,就很可能将源代码泄露出去。那么,一旦攻击者或者黑客发现这个问题之后,就可能利用其获取网站的源码、数据库等重要资源信息,进而造成严重的危害。
Git源码泄露示例
1. 首先扫描器扫到了该漏洞
2. 漏洞利用
如何利用泄露的.git文件?利用工具:https://github.com/lijiejie/GitHack
GitHack.py http://www.xx.com/.git/
这样我们就可能能还原网站的源码
工具原理
1、解析.git/index文件,找到工程中所有的: ( 文件名,文件sha1 )
2、去.git/objects/ 文件夹下下载对应的文件
3、zlib解压文件,按原始的目录结构写入源代码
修复建议:删除.git目录或者修改中间件配置进行对.git隐藏文件夹的访问。
2 .DS_Store 文件泄露
.DS_Store是Mac下Finder用来保存如何展示文件或者文件夹的数据文件,每个文件夹下对应一个。由于开发/设计人员在发布代码时未删除文件夹中隐藏的.DS_store,可能造成文件目录结构泄漏、源代码文件等敏感信息的泄露。
漏洞利用工具:
github项目地址:https://github.com/lijiejie/ds_store_exp
用法示例:
ds_store_exp.py http://hd.zj.qq.com/themes/galaxyw/.DS_Store
3 .svn 源码泄露
1. 介绍
SVN是一个开放源代码的版本控制系统。在使用SVN管理本地代码过程中,会自动生成一个名为.svn的隐藏文件夹,其中包含重要的源代码信息。网站管理员在发布代码时,没有使用‘导出’功能,而是直接复制代码文件夹到WEB服务器上,这就使.svn隐藏文件夹被暴露于外网环境,可以利用.svn/entries文件,获取到服务器源码。
2. 漏洞利用工具
Seay SVN漏洞利用工具
3. 修复建议
删除web目录中所有.svn隐藏文件夹,开发人员在使用SVN时,严格使用导出功能,禁止直接复制代码。
4. 网站备份压缩文件泄漏
一般网站管理员在日常维护中,总会把网站源码给备份一下,防止网站出现问题时,能马上的恢复使用,不过一般的管理员安全意识不高,在备份的时候,会使用一些常见的压缩备份名,而且不光使用常见的备份名字,大部分的管理还会把备份好的源码直接放在网站根目录里,这样给一些不法之徒,提供了一个很方便的渗透思路,或者有些直接不需要渗透了,因为备份中的数据,就已经满足那些不法之徒的需求了。
常见的备份文件后缀:
- .rar
- .zip
- .7z
- .tar.gz
- .bak
- .txt
- .old
- .temp
一般使用web目录扫描工具如御剑就能扫描出来
5. SWP 文件泄露
swp即swap文件,在编辑文件时产生的临时文件,它是隐藏文件,如果程序正常退出,临时文件自动删除,如果意外退出就会保留,文件名为 .filename.swp。
漏洞利用
直接访问.swp文件,下载回来后删掉末尾的.swp,获得源码文件。
6. WEB-INF/web.xml 泄露
WEB-INF是Java的WEB应用的安全目录,如果想在页面中直接访问其中的文件,必须通过web.xml文件对要访问的文件进行相应映射才能访问。
WEB-INF 主要包含以下文件或目录:
WEB-INF/web.xml : Web应用程序配置文件, 描述了servlet和其他的应用组件配置及命名规则.
WEB-INF/database.properties : 数据库配置文件
WEB-INF/classes/ : 一般用来存放Java类文件(.class)
WEB-INF/lib/ : 用来存放打包好的库(.jar)
WEB-INF/src/ : 用来放源代码(.asp和.php等)
漏洞利用
通过找到 web.xml 文件,推断 class 文件的路径,最后直接 class 文件,再通过反编译 class 文件,得到网站源码。
7. GitHub源码泄漏
GitHub是一个面向开源及私有软件项目的托管平台,数以百计的大侠,高手,圣手,教主,小白,宗主,等等级别人物的汇集之地,而平台的服务设施,很人性化,而且用户体验度高,所以用的人很多,而且很人也都喜欢把自己的代码上传到平台,反正是很方便。
有些安全意识不高的程序员大意的把自己的项目源码上传到 GitHub ,一些 不法份子 在收集信息中,通过关键词进行搜索,可以找到关于目标站点的信息,有些信息直接泄露了网站源码,管理员账号密码,数据库信息等。
- 海报