Bootstrap

常见Web源码泄露总结

一,源码泄露分类
  • 版本控制系统造成的文件泄露
  • .DS_Store
  • 配置文件泄露
  • 网站备份文件泄露
二,源码泄露汇总
2.1 git源码泄露

漏洞信息

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

漏洞利用

​ 工具 GitHack

利用方法

GitHack.py http://www.example.com/.git/

也可以使用rip-git工具进行漏洞利用

rip-git.pl -v -u http://www.example.com/.git/
2.2 svn文件泄露

漏洞信息

使用svn checkout后,项目目录下会生成隐藏的.svn文件夹(Linux上用ls命令看不到,要用ls -al命令)。svn1.6及以前版本会在项目的每个文件夹下都生成一个.svn文件夹,里面包含了所有文件的备份,文件名为 .svn/text-base/文件名.svn-base svn1.7及以后版本则只在项目根目录生成一个.svn文件夹,里面的pristine文件夹里包含了整个项目的所有文件备份

漏洞利用

​ 工具 dvcs-ripper

利用方法

rip-svn.pl -v -u http://www.localhost.test/.svn/
漏洞修复

​ 删除web目录中所有.svn隐藏文件夹,开发人员在使用SVN时,严格使用导出功能,禁止直接复制 代码。

2.3 cvs泄露

漏洞信息

​ CVS是一个C/S系统,多个开发人员通过一个中心版本控制系统来记录文件版本,从而达到保证文件 同步的目的。主要是针对 CVS/Root以及CVS/Entries目录,直接就可以看到泄露的信息

http://url/CVS/Root 返回根信息
http://url/CVS/Entries 返回所有文件的结构

漏洞利用

​ 工具 dvcs-ripper

利用方法

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

漏洞修复

​ 删除CSV文件夹

2.4 Bazaar/bz泄漏

漏洞信息

bzr也是个版本控制工具, 虽然不是很热门, 但它也是多平台支持, 并且有不错的图形界面。

漏洞利用

​ 工具dvcs-ripper

利用方法

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

漏洞修复

删除web目录中所有.bzr隐藏文件夹

2.5 WEB-INF/web.xml泄露

漏洞信息

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

WEB-INF主要包含一下文件或目录

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

通常一些web应用我们会使用多个web服务器搭配使用,解决其中的一个web服务器的性能缺陷以及做均衡负载的优点和完成一些分层结构的安全策略等。在使用这种架构的时候,由于对静态资源的目录或文件的映射配置不当,可能会引发一些的安全问题,导致web.xml等文件能够被读取。

漏洞成因

一般情况,jsp引擎默认都是禁止访问WEB-INF目录的,Nginx 配合Tomcat做均衡负载或集群等情况时,Nginx不会去考虑配置其他类型引擎(Nginx不是jsp引擎)导致的安全问题而引入到自身的安全规范中来

漏洞检测

检测是否能访问web.xml文件,如果能则可能存在源码泄露

漏洞利用

检测是否能访问web.xml文件,如果能则可能存在源码泄露

漏洞修复

修改Nginx配置文件禁止访问WEB-INF目录就好了:location ~ ^/WEB-INF/* { deny all; } 或者return 404; 或者其他

2.6 hg源码泄露

漏洞信息

Mercurial 是一个版本控制系统,一种轻量级分布式版本控制系统,采用 Python 语言实现,开发者可以用它来管理源代码。hg在初始化代码库的时候,会在当前目录下面产生一个.hg的隐藏文件夹

删除.hg

漏洞利用

工具 dvcs-ripper

https://github.com/kost/dvcs-ripper

利用方式

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

漏洞修复

删除web目录中所有.hg隐藏文件夹
原文地址

;