| jsp编程语言自从推出之日起,由于它的快速、平台无关、可扩展、面向对象等特性得到了越来越广泛的应用,越来越多的厂家开发出了各种各样的支持平台如IBM 公司的WebSphere、BEA公司的WebLogic等等,也有越来越多的网站开始将自己的平台架构在jsp 环境中。 但是随之而来的就是一系列的安全漏洞问题,如源代码暴露漏洞、远程任意命令执行漏洞等等,更为头疼的是,随着jsp 的越来越广泛的应用,安全问题也越来越多了。截止到这篇文章为止,Internet上公开的关于jsp 的漏洞问题就多达二、三十条(还不包括未公开的)。(统计数据来源于http://www.securityfocus.com) 不要轻视这些问题,想象一下,你辛辛苦苦开发出来的jsp 代码就被别人这样轻而易举的获得了,更为重要的是,你公司网站的代码被人下载后,别有用意的人就会看你的代码,从中找到一些漏洞来攻击你的公司网站,所以这些问题不容忽视。作者在sohu 上搜索了一些用jsp做的国内网站,结果发现有一些网站确实存在各种各样的漏洞,可以轻松的下载jsp源代码。 本篇文章重点在于对jsp安全问题进行分类阐述和提出解决的建议,所以每种类型的安全问题只采用了一个例子,对于其它各种漏洞的具体细节如涉及到何种软件版本何种操作系统等就不一一进行阐述了,有兴趣的读者可以到我的网站jsp 爱好者(http://jspbbs.yeah.net)或者国外的安全站点(http://www.securityfocus.com)进行查看和参考。 根据目前已经发现的jsp安全问题,我们不妨将它们分为以下几类,源代码暴露类、远程程序执行类和其他类别, 下面来看看具体的东西吧。 一、源代码暴露类 源代码暴露类别主要指的是程序源代码会以明文的方式返回给访问者. 我们知道不管是jsp还是asp、php等动态程序都是在服务器端执行的,执行后只会返回给访问者标准的html 等代码。这是理论上的东西,实际运行起来由于服务器内部机制的问题就有可能引起源代码暴露的漏洞,简单的例子只要在程序文件名后加几个简单的字符就可能获得程序代码,如常见微软asp 的global.asa+.htr、XXXX.asp%81等等漏洞。 1、添加特殊后缀引起jsp源代码暴露 在jsp中也存在着和asp这些漏洞类似的问题,如IBM Websphere Application Server 3.0.21、BEA Systems Weblogic 4.5.1、Tomcat3.1等jsp文件后缀大写漏洞;jsp 文件后加特殊字符如Resin1.2的%82、../漏洞;ServletExec的%2E、+漏洞等等。 例子:举个老一点的JSP大写例子,Tomcat3.1下在浏览器中本来是http://localhost:8080/inde.jsp,可以正常解释执行,但是如果将inde.jsp改为inde.JSP或者inde.Jsp等等试试看,你会发现浏览器会提示你下载这个文件,下载后源代码可以看个一干二净。 原因:jsp是大小写敏感的,Tomcat只会将小写的jsp后缀的文件当作是正常的jsp文件来执行,如果大写了就会引起Tomcat将inde.JSP当作是一个可以下载的文件让客户下载。老版本的WebLogic、WebShpere等都存在这个问题,现在这些公司或者发布了新版本或者发布了补丁解决了这问题。 解决办法:一是在服务器软件的网站上下载补丁;因为笔者以前用过asp 一段时间,接触了很多IIS的漏洞,它的有效解决方法是去掉不必要的映射如htr、htx等,在jsp 中我们同样可以参考IIS的解决方法,不同的是不是去掉而是添加映射,方法为在服务器设置中添加一些映射如.JSP 、.Jsp、.jsp%2E等,将他们映射到一个自己写的servlet,这个Servlet的唯一功能就是将请求导向一个自定义的类似404 not found的出错页面,不同的服务器设置的地方也不同,请参考相应的文档。第二种解决方法可以在没有补丁的时候采用。 2、插入特殊字符串引起jsp源代码暴露 还有一种是插入特殊字符串引起的漏洞,BEA WebLogic Enterprise 5.1. 文件路径开头为 "/file/" 的漏洞、IBM WebSphere 3.0.2的"/servlet/file/"文件开头漏洞等等。 例子:如IBM WebSphere 3.0.2中,如果一个请求文件的 URL 为"login.j [1] [2] [3] 下一页
|