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 主要包含一下文件或目录:
/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的目录下。
工具
Bazaar/bzr
这个也没见过,暂时做记录。
工具
使用命令:
rip-bzr.pl -v -u http://www.example.com/.bzr/
这个工具比较叼,上面的.git,.svn都可以利用。
信息搜集工具
小结
敏感信息/文件/源码泄露种类有很多种,这里只是简单的做个总结,常见的,至于实际应用还是要结合实际情况(CTF比赛里面也经常看到这样的利用方式)。一步步积累。
感谢各位大佬博客的技术支持: