WEB安全-常见源码泄露

About WEB Security

About WEB Security


0x0 前言

关于WEB安全,这两天做题碰到了.git源码泄露的问题,刚好自己又记得不牢,所以写了个笔记,记录下关于常见的源码泄露。

0x1 .git源码泄露

当在一个空目录执行 git init 时,Git 会创建一个 .git 目录。 这个目录包含所有的 Git 存储和操作的对象。 如果想备份或复制一个版本库,只需把这个目录拷贝至另一处就可以了

比如某个网站存在.git文件泄露,可以:

http://www.baidu.com/.git

利用方式:
github上的githack可以把整个.git备份的文件下载下来。它能解析 .git/index 文件,并找到工程中所有的:文件名和文件 sha1,然后去 .git/objects/ 文件夹下下载对应的文件,通过 zlib 解压文件,按原始的目录结构写入源代码

工具

0x2 .svn源码泄露

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

很多网站都使用了 svn 版本控制系统,和使用 git 版本控制器类似,很多开发者网站安全意识不足,代码放到生产坏境中后,没有清理 svn 的一些信息,导致 svn 残留,因此攻击者可以使用工具 dvcs-ripper 下载网站源码。

当可以访问到/.svn/entries的时候,就证明存在了。

比如乌云曾经爆出的某个网站:

http://data.5i5j.com/sitemetrics/.svn/entries

工具
利用命令:

rip-svn.pl -v -u http://www.localhost.test/.svn/

当然还有更简单的,seay-svn
工具

0x3 DS_Store 文件泄露

.DS_Store 文件 MAC 系统是用来存储这个文件夹的显示属性的:比如文件图标的摆放位置。如果用户删除以后的副作用就是这些信息的失去。

这些文件本来是给 Finder 使用的,但它们被设想作为一种更通用的有关显示设置的元数据存储,诸如图标位置和视图设置。 当你需要把代码上传的时候,安全正确的操作应该把 .DS_Store 文件删除才正确。通过.DS_Store可以知道这个目录里所有的文件名称。

当访问/.ds_store可以访问的到,就证明存在。例如:

http://www.baidu.com/.ds_store

工具
使用方式:

python ds_store_exp.py http://www.example.com/.DS_Store

0x4 .hg 源码泄露

使用hg init 新建仓库的时候,会生成一个备份文件.hg,当访问/.hg存在的时候,就证明存在该漏洞。例如:

http://www.baidu.com/.hg/

工具
使用方式:

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

0x5 常见编辑器备份文件泄露

http://[ip]/.test.php.swp
http://[ip]/test.php.bak
http://[ip]/test.jsp.old
http://[ip]/cgi~ http://[ip]/index.php~ 如果存在这些问题,可以直接下载文件,查看文件内容。

0x6 WEB-INF/web.xml泄露

WEB-INF 是 Java 的 WEB 应用的安全目录。该目录原则上来说是客户端无法访问,只有服务端才可以可以访问。如果想在页面中直接访问其中的文件,必须通过 web.xml 文件对要访问的文件进行相应映射才能访问。

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

  1. /WEB-INF/web.xml:Web 应用程序配置文件,描述了 servlet 和其他的应用组件配置及命名规则;

  2. /WEB-INF/classes/:含了站点所有用的 class 文件,包括 servlet class 和非 servlet class,他们不能包含在 .jar 文件中;

  3. /WEB-INF/lib/:存放 web 应用需要的各种 JAR 文件,放置仅在这个应用中要求使用的 jar 文件 , 如数据库驱动 jar 文件;

  4. /WEB-INF/src/:源码目录,按照包名结构放置各个 java 文件;

  5. /WEB-INF/database.properties:数据库配置文件。

不过在一些特定的场合却会让攻击者能读取到其中的内容,从而造成源码泄露.

访问:

http://www.baidu.com/WEB-IBF/web.xml

目录存在的位置是不固定的,要从实际情况出发,在进行渗透测试的时候,我曾经就碰到过。

0x7 网站备份文件泄露

在网站的升级和维护过程中,通常需要对网站中的文件进行修改。此时就需要对网站整站或者其中某一页面进行备份。

当备份文件或者修改过程中的缓存文件因为各种原因而被留在网站 web 目录下,而该目录又没有设置访问权限时,便有可能导致备份文件或者编辑器的缓存文件被下载,导致敏感信息泄露,给服务器的安全埋下隐患。

该漏洞的成因主要有是管理员将备份文件放在到 web 服务器可以访问的目录下。

该漏洞往往会导致服务器整站源代码或者部分页面的源代码被下载,利用。源代码中所包含的各类敏感信息,如服务器数据库连接信息,服务器配置信息等会因此而泄露,造成巨大的损失。

被泄露的源代码还可能会被用于代码审计,进一步利用而对整个系统的安全埋下隐患。

文件后缀:

.rar   .zip  .7z   .tar.gz   .bak    .swp   .txt   .sql

比如:

http://wm123.baidu.com/wm123.tar.gz

通过扫描网站的目录,可以发现这些敏感的备份文件,由于浏览器不能直接解析这些文件后缀,导致可以直接下载,查看网站的源码。

0x8 cvs文件泄露

这个,没碰到过。
例如:

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

取回源码的命令:

bk clone http://url/name dir

这个命令的意思就是把远端一个名为name的repo clone到本地名为dir的目录下。
工具

Bazaar/bzr

这个也没见过,暂时做记录。
工具
使用命令:

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

这个工具比较叼,上面的.git,.svn都可以利用。

信息搜集工具

weakfilescan

小结

敏感信息/文件/源码泄露种类有很多种,这里只是简单的做个总结,常见的,至于实际应用还是要结合实际情况(CTF比赛里面也经常看到这样的利用方式)。一步步积累。

感谢各位大佬博客的技术支持:

谈谈源码泄露
常见web源码泄露总结


Reprint please specify: wh1te WEB安全-常见源码泄露

Previous
暴力破解工具的的使用 暴力破解工具的的使用
Use of violence cracking tools About Brute force 0x00 前言暴力破解在很多地方都可以用到,比如burp就自带暴力破解的选项,很实用,但是在web以外的服务,比如爆破ftp密码,ssh密码
2018-05-10
Next
python的学习之路一 python的学习之路一
On the learning of Python pythonpython是一门非常厉害的语言,关于它的介绍,就不多说了,只要掌握了基础的语法,剩下的就是逐渐认识python的一些库,python的厉害之处就是有很多各种各样的库,把这些
2018-05-10
TOC