一、漏洞成因
在 WEB 安全体系当中,可能你对 SQL 注入,XSS 跨站一些漏洞已经耳熟于心了,而源码泄露问题对于大部分开发者来说就相对陌生了 , 而源码泄露导致的问题却并不少见,在过往的泄露案例当中,不仅是小网站有此问题,在一些大的厂商同样出现不少,并因此拿到 webshell。
比如在一些小型企业,可能公司并没有专门的服务器,而是把网站部署在某一个虚拟主机上面,代码文件比较多的时候 FTP 上传是比较慢的,于是开发者把代码先打包压缩后再上传,上传成功后再去服务器解压,这有虽然解决了上传速度慢的问题,不过却留下了一些安全隐患。
压缩包解压后如果没有删除,当攻击者发现后就可以把代码压缩包下载;因为部署到服务器上的都是源代码,这个时候攻击者就可以通过代码进一步挖掘一些安全漏洞:文件上传,SQL 注射等。
二、GIT 源码泄露
1. 漏洞成因
当在一个空目录执行 git init 时,Git 会创建一个 .git 目录。 这个目录包含所有的 Git 存储和操作的对象。 如果想备份或复制一个版本库,只需把这个目录拷贝至另一处就可以了。
该目录的结构如下所示:
HEAD config* description hooks/ info/ objects/ refs/
在这些结构中 description 文件仅供 GitWeb 程序使用,我们可以无需关心。
-
config 文件包含项目特有的配置选项;
-
info 目录包含一个全局性排除(global exclude)文件,用以放置不希望被记录在 .gitignore 文件中的忽略模式(ignored patterns);
-
hooks 目录包含客户端或服务端的钩子脚本(hook scripts)。
而在剩下的四个条目很重要:
-
HEAD 文件指示目前被检出的分支;
-
index 文件保存暂存区信息;
-
objects 目录存储所有数据内容;
-
refs 目录存储指向数据(分支)的提交对象的指针。
而在发布代码的时候,如果没有把 .git 这个目录删除,直接发布到了运行目录中。攻击者就可以通过这个文件夹,可以用来恢复源代码。
http://www.localhost.test/.git/config
通常会用到的利用工具 GitHack ,这个工具下载下来之后操作也特别简单。
GitHack.py http://www.localhost.test/.git/
它能解析 .git/index 文件,并找到工程中所有的:文件名和文件 sha1,然后去 .git/objects/ 文件夹下下载对应的文件,通过 zlib 解压文件,按原始的目录结构写入源代码。
2. GIT 源码泄露 案例
2015 年 5 月,乌云白帽子 “lijiejie” 提交漏洞 “大众点评某站点 git 泄漏源代码”,缺陷编号:wooyun-2015-0117332
在此次案例当中,白帽子发现 URL(http://qq.m.dianping.com/.git/ )可以访问,于是通过工具 githack 下载里面的文件,下面为 githack.py 执行中的截图:
源码被下载下来之后,白帽子打开其中的一个代码文件可以看到里面的源码:
三、SVN 导致文件泄露
1. 漏洞成因
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。互联网上很多版本控制服务已从 CVS 迁移到 Subversion。
很多网站都使用了 svn 版本控制系统,和使用 git 版本控制器类似,很多开发者网站安全意识不足,代码放到生产坏境中后,没有清理 svn 的一些信息,导致 svn 残留,因此攻击者可以使用工具 dvcs-ripper 下载网站源码。
此工具的 Github 地址:https://github.com/kost/dvcs-ripper。
利用命令如下:
rip-svn.pl -v -u http://www.localhost.test/.svn/
2. SVN 源码泄露案例 案例
2015 年 10 月,乌云白帽子提交漏洞 “我爱我家某处源码泄露”。缺陷编号:wooyun-2015-0149331
在我爱我家有一处域名为 data.5i5j.com , 白帽子发现下面的地址可以访问到:
http://data.5i5j.com/sitemetrics/.svn/entries
白帽子知道使用 svn 版本控制器会在目录中生成 .svn 文件夹,于是猜测该处存在源码泄露问题,于是使用工具 dvcs-ripper 对其进行了一番验证,验证证实了最初的猜测,并得出了下面的目录以及代码文件。
在文件目录中,发现一个文件名比较敏感,对其打开查看发现里面包含了数据库地址,用户名,密码等信息。
四、DS_Store 文件泄漏
1. 漏洞成因
.DS_Store 文件 MAC 系统是用来存储这个文件夹的显示属性的:比如文件图标的摆放位置。如果用户删除以后的副作用就是这些信息的失去。
这些文件本来是给 Finder 使用的,但它们被设想作为一种更通用的有关显示设置的元数据存储,诸如图标位置和视图设置。 当你需要把代码上传的时候,安全正确的操作应该把 .DS_Store
文件删除才正确。
因为里面包含了一些目录信息,如果没有删除,攻击者通过 .DS_Store
可以知道这个目录里面所有文件名称,从而让攻击者掌握了更多的信息。
在发布代码时未删除文件夹中隐藏的 .DS_store,被发现后,获取了敏感的文件名等信息。攻击者可以利用访问 URL(http://www.localhost.test/.ds_store )的方式来判断,是否存在DS_store
泄露,如果存在泄漏,使用工具:dsstoreexp,就可以轻松的下载出源代码。
如下面的命令:
ds_store_exp.py http://www.localhost.test/.DS_Store
2. .DS_Store 泄露 案例
2015 年 9 月,乌云白帽子 “深度安全实验室” 提交漏洞 “TCL 某网站 DS_Store 文件泄露敏感信息(谨慎使用 Mac 系统)”,缺陷编号:wooyun-2015-091869
在 TCL 可视化系统事业部网站中,把苹果的隐藏文件 DS_Store 也给搬到生产坏境中 , 导致泄露了目录结构,从而获取到后台管理页面以及数据库文件。打开文件 http://www.tcl-cctv.com/.DS_Store 可以看到下面的内容。
通过图中的内容可以看到两处比较敏感的文件,tel_manage.php 以及 tcl_cctv.sql。于是白帽子通过此处泄露的信息,猜测到网站后台地址为:
http://www.tcl-cctv.com/tcl_manage.php
以及数据库文件 URL:
http://www.tcl-cctv.com/tcl_cctv.sql
打开数据库文件对应的 URL,在其中可以找到后台管理员账户和密码:
用户名:admin 密码:c5b5ae8bdfccc8beefec ,通过 cmd5.com 解密后,可以得到真实的密码。
在后台 URL 中,输入账号密码,可以看见下图已经登录成功。
五、网站备份压缩文件
1. 漏洞成因
在网站的升级和维护过程中,通常需要对网站中的文件进行修改。此时就需要对网站整站或者其中某一页面进行备份。
当备份文件或者修改过程中的缓存文件因为各种原因而被留在网站 web 目录下,而该目录又没有设置访问权限时,便有可能导致备份文件或者编辑器的缓存文件被下载,导致敏感信息泄露,给服务器的安全埋下隐患。
该漏洞的成因主要有是管理员将备份文件放在到 web 服务器可以访问的目录下。
该漏洞往往会导致服务器整站源代码或者部分页面的源代码被下载,利用。源代码中所包含的各类敏感信息,如服务器数据库连接信息,服务器配置信息等会因此而泄露,造成巨大的损失。
被泄露的源代码还可能会被用于代码审计,进一步利用而对整个系统的安全埋下隐患。
.rar .zip .7z .tar.gz .bak .swp .txt
2. 备份压缩文件 案例
2014 年 5 月,乌云白帽子 “Noxxx” 提交漏洞 “百度某分站备份文件泄露”,缺陷编号:wooyun-2014-050622
百度网盟的 URL 地址是:
http://wm123.baidu.com
白帽子无意中发现在 URL 加上域名 +.tar.gz 也就是 URL:
http://wm123.baidu.com/wm123.tar.gz
没想到就下载了网站源码;在其源码中还发现了数据库的链接地址,以及账号信息,如下图:
六、WEB-INF/web.xml 泄露
1. 漏洞成因
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:数据库配置文件。
不过在一些特定的场合却会让攻击者能读取到其中的内容,从而造成源码泄露。
2. WEB-INF 目录配置漏洞 案例
2013 年 2 月,乌云白帽子 “Asuimu” 提交漏洞 “华为官网 WEB-INF 目录配置文件导致信息泄露”,缺陷编号:wooyun-2013-022906
在该漏洞中由于目录权限未做好控制,导致网站配置信息泄露以及源码泄露问题。
此漏洞的 WEB-INF 目录位置 URL 为:
http://enterprise.huawei.com/topic/hcc/WEB-INF/
白帽子首先寻找配置文件(web.xml)的位置,通过 web.xml 的位置得到 URL 为:
http://enterprise.huawei.com/topic/hcc/WEB-INF/web.xml
访问 URL 后,能看到如上图中的内容,白帽子发现有一个 classes/applicationContext.xml 文件;访问此文件对应的 URL 后,又从此文件中中找到了数据库配置文件 db-config.xml 的路径。
打开 db-config.xml 对应的 URL 后,能看到 mysql 的连接信息,比如 root Huawei!2012 localhost 等等信息。不过因为数据库限制只能本地连接,所以白帽子并没有连接上数据库。
通过此漏洞还下载了部分源码,比如 URL:
http://enterprise.huawei.com/topic/hcc/login.jsp
对应下图中的源码:
七、防御方案
从上面的五种泄露方式可以看出,大部分情况都是代码上传后没有及时清理附带信息所造成的。
因此我建议代码发布尽量使用工具 rsync 来发布,因为此工具同步时可以排除一些目录或者文件,比如要排除所有 .svn 文件,可以如下面的命令行来排除,git 同理。
rsync -avlH --exclude=*.svn root@192.168.1.100:~/tmp/ /data/version/test/
如果不能生产坏境不能使用 rsync,也给大家几点小建议:
-
Git 在仓库的根目录新建一个文件夹,把代码放入此文件夹中,网站的根目录应该指向此文件夹。这样攻击者就不能访问到 .git 文件夹的内容了。
-
不要直接使用 git 或 SVN 等工具拉去代码到生产目录,可以在一个临时目录先拉去下来,把其中的一些版本控制器附带信息都去掉后再同步到生产目录。
-
使用 mac 系统的开发者需要注意不要把 .ds_store 文件上传上去,因为里面包含在一些目录信息,会导致文件名称泄露
-
Web 生产目录中不要存放代码压缩文件,这些文件极有可能被攻击者所发现,而下载下来。
--------------------- 作者:GitChat技术杂谈 来源:CSDN 原文:https://blog.csdn.net/gitchat/article/details/79014538?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!
相关推荐
【Web网页设计制作-毕业设计期末大作业】HTML、CSS、JavaScript前端网页项目源码【Web网页设计制作-毕业设计期末大作业】HTML、CSS、JavaScript前端网页项目源码【Web网页设计制作-毕业设计期末大作业】HTML、CSS、...
Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计...
《白帽子讲Web安全》内容简介:在互联网时代,数据安全与个人隐私受到了前所未有的挑战,各种新奇的攻击技术层出不穷。如何才能更好地保护我们的数据?《白帽子讲Web安全》将带你走进Web安全的世界,让你了解Web安全...
Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web...
ASP实例开发源码—Web安全防御机制 GuardianGenius.zip ASP实例开发源码—Web安全防御机制 GuardianGenius.zip ASP实例开发源码—Web安全防御机制 GuardianGenius.zip
Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web...
【Web网页设计制作-毕业设计期末大作业】HTML、CSS、JavaScript前端网页项目源码【Web网页设计制作-毕业设计期末大作业】HTML、CSS、JavaScript前端网页项目源码【Web网页设计制作-毕业设计期末大作业】HTML、CSS、...
理解并掌握WebFTP的实现原理和源码,对于开发和维护FTP服务,或是改进现有Web应用的文件管理功能都非常有帮助。同时,对于学习网络编程、Web开发以及服务器管理等方面的知识,也有着积极的促进作用。
Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计...
【Web网页设计制作-毕业设计期末大作业】HTML、CSS、JavaScript前端网页项目源码【Web网页设计制作-毕业设计期末大作业】HTML、CSS、JavaScript前端网页项目源码【Web网页设计制作-毕业设计期末大作业】HTML、CSS、...
Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web...
Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计...
基于web的汽车4S店管理系统源码基于web的汽车4S店管理系统源码基于web的汽车4S店管理系统源码基于web的汽车4S店管理系统源码基于web的汽车4S店管理系统源码。基于web的汽车4S店管理系统源码基于web的汽车4S店管理...
开源Web Office源码是开发基于Web的文档处理应用的核心组件,尤其对于那些希望构建自定义办公解决方案的企业或开发者而言,这是一个宝贵的资源。标题中的“开源”意味着这些源代码是公开的,允许用户自由查看、使用...
这款游戏源码专为Web平台设计,允许用户在浏览器上进行文字交互式的冒险体验。 【描述】"一款很好玩的文字游戏源码,大家可以下载玩玩看,自行搭建! PHP" 揭示了这个游戏的趣味性,并鼓励用户下载源码并自行部署到...
Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web网页设计制作-毕业设计期末大作业源码 Web...
深入理解并研究"weboffice源码1.0",开发者可以掌握Web应用开发的全貌,提升对前后端交互、文档处理、协作系统设计、安全性实践等多个领域的技能。同时,源码学习也能帮助开发者积累实战经验,提高问题解决能力。
Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计制作-毕业设计期末大作业源码课程设计 Web网页设计...
JAVA WEB 校园订餐系统项目源码+数据库 JAVA WEB 校园订餐系统项目源码+数据库 JAVA WEB 校园订餐系统项目源码+数据库 JAVA WEB 校园订餐系统项目源码+数据库 JAVA WEB 校园订餐系统项目源码+数据库 JAVA WEB 校园...
【Web网页设计制作-毕业设计期末大作业】HTML、CSS、JavaScript前端网页项目源码【Web网页设计制作-毕业设计期末大作业】HTML、CSS、JavaScript前端网页项目源码【Web网页设计制作-毕业设计期末大作业】HTML、CSS、...