WEB安全-常见源码泄露

Posted 大灬白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WEB安全-常见源码泄露相关的知识,希望对你有一定的参考价值。

目录标题

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

工具:https://github.com/lijiejie/ds_store_exp
使用方式:

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

0x4 .hg 源码泄露

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

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

工具:https://github.com/kost/dvcs-ripper
使用方式:

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 主要包含一下文件或目录:

/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:数据库配置文件。

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

访问:

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的目录下。
工具:https://github.com/bitkeeper-scm/bitkeeper

Bazaar/bzr
这个也没见过,暂时做记录。
工具:https://github.com/kost/dvcs-ripper
使用命令:

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

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

信息搜集工具
weakfilescan

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

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

以上是关于WEB安全-常见源码泄露的主要内容,如果未能解决你的问题,请参考以下文章

WEB安全-常见源码泄露

安全测试 web常规安全漏洞问题介绍和防范说明,如:SQL注入攻击XSS跨站点脚本攻击JS注入注释与异常信息泄露跨站点请求伪造路径遍历与强制浏览越权访问类常见网络安全问题是什么?

JavaServerless/FaaS源码泄露Tmux裁员 | Chat · 预告

常见的Web源码泄露总结

防火墙和系统安全防护和优化

CTF中常见Web源码泄露总结