常规的文件泄露包含了下面的几种形式:
- Github
- git
- svn
- .DS_Store
- .hg
- .bzr
- cvs
上面的七种为版本管理工具所泄露的常规方式
- WEB-INF
- 网站备份,zip,sql,rar,swp,phpinfo:是指在网站目录存在这些备份文件
上面的两种方式为操作不当,安全意识薄弱所造成的泄露。
github泄露:开发人员将代码上传到网站,在上传的时候,没有删除重要的一些信息。如邮箱信息,SVN信息,内部账号和密码,数据库连接信息,服务器配置信息等。尤其是邮箱信息和内部账号和密码。
这类信息可以通过在github上搜索公司的一些特定信息,查看是否有程序员将这些信息上传到了github上。
如公司的域名如下:niniub.com;则可以在github上用这个信息去进行搜索,看看是否有包含该类关键字的文件。
这类安全漏洞只能靠人员的安全意识进行防护,没有其它方法进行。
git导致文件泄露:
指将代码部署的时候,没有将.git版本控制的目录进行删除。这时,用户可以使用这个目录下的文件,来恢复源码。从而可以获取如数据库密码,源码漏洞等信息。
该漏洞的运用方法:下载脚本https://github.com/lijiejie/GitHack
使用该脚本的方法:python GitHack.py http://yoururl/.git/
这样就可以恢复出来这个执行脚本的目录下恢复出该网站的源码了。
防护方法:在部署的时候,对.git文件夹进行删除;也可以在nginx配置中,对.git目录的访问进行屏蔽。
svn导致文件泄露:
指将代码部署的时候,没有将.svn版本控制的目录进行删除。这时,用户可以使用这个目录下的文件,来恢复源码。从而可以获取如数据库密码,源码漏洞等信息。
漏洞利用的方式:
- wget -r --no-parent --mirror http://yourdomain/.svn
- cd yourdomain && svn revert --recursive
通过上面两行命令,就可以恢复出代码来。
第二种方式:https://github.com/kost/dvcs-ripper的脚本
使用下面的命令:rip-svn.pl -v -u http://yourdomain/.svn/
就可以恢复出代码来。
第三种方式:Seay-SVN工具
漏洞防护的方法:
- 在部署的时候,将该文件进行删除
Apache防护方法:
<Directory ~ "\.svn">
Order allow,deny
Deny from all
</Directory>
Nginx防护方法:
location ~ ^(.*)\/\.svn\/ {
return 404;
}
DS_Store漏洞:
该文件为苹果电脑的隐藏文件,这只会在苹果电脑才会存在。该文件上传后,可能会造成文件目录结构泄露,特别是备份文件,源代码文件。
漏洞利用的工具:https://github.com/lijiejie/ds_store_exp,使用这个工具,就可以对上面的目录进行利用。
这个漏洞跟上面两个类似,主要的防护方法就是将给文件给删除掉。
sudo find / -name ".DS_Store" -depth -exec rm {} \;
.hg文件泄露,这也是一个版本控制系统的隐藏文件,跟svn和git一样。
.bzr文件泄露,这也是一个版本控制系统的隐藏文件,跟svn和git一样。
WEB-INF/web.xml造成的信息泄露,它的原理与phpinfo相似,都是通过该页面,泄露出网站的一些重要信息。如果存在该信息泄露的漏洞,必须通过禁止访问的方式来防范。
网站备份漏洞:该漏洞主要是运维人员的安全意识不到位造成的。运维人员通过在代码执行目录下备份重要的文件,这会导致用户可以直接下载到该文件。如xxx.zip,xxx.tgz,xxx.rar等
还有一个文件往往被忽视,那就是.swp的文件,这个文件在使用vim/vi工具进行修改的时候,会生成。如果没有删除的话,用户也是可以获取到该文件的。