快捷搜索:

jsp安全问题及其解决建议(转贴)

jsp安然问题及其办理建议

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.jsp":http://site.running.websphere/login.jsp,那么造访http://site.running.websphere/servlet/file/login.jsp将看到这个文件的源代码。

缘故原由:由于IBM WebSphere 3.0.2是调用不合的 servlets 对不合的页面进行处置惩罚,假如一个哀求的文件是未进行注册治理的,WebSphere 会应用一个默认的 servlet 调用。假如文件路径以"/servlet/file/"作开首这个默认的 servlet 会被调用这个哀求的文件会未被阐发或编译就显示出来。

办理措施:在办事器软件的网站下载最新的补丁。

3、路径权限引起的文件jsp源代码裸露

这种破绽在正常的jsp破绽中没有反应出来,然则笔者在写jsp法度榜样中曾经碰着过,头疼了一阵子,着末总算办理了。我们知道,大年夜部分的jsp利用法度榜样在当前目录下都邑有一个WEB-INF目录,这个目录平日寄放的是JavaBeans编译后的class 文件,假如不给这个目录设置正常的权限,所有的class就会曝光。

例子:笔者当时采纳的是Apache1.3.12加上第三方jsp软件形式的WEB办事器,由于Apache1.3.12默认的设置是可以读取目录的,假如法度榜样在http://site.running.websphere/login.jsp,只要改动一下http://site.running.websphere/WEB-INF/所有这个目录下以及这个目录下的子目录中的class文件可以看个一干二净的,还可以下载到本机上。

大概你会说class是颠末编译的,就算被人下载也没有什么关系,然则现在class 反编译为java代码的软件也很多,笔者当时采纳JAD软件对下载的class文件反编译了一下,居然和原始的java文件险些如出一辙,变量名都没有变,更惊奇的是还可以从新编译为class文件正常应用。

安然问题更大年夜的便是,笔者开始把数据库的用户名密码都写在了java代码中,现在一反编译谁都能看到数据库的紧张信息。经由过程数据库的远程连接功能,可以轻松的进入到你的数据库中,所有信息整个在他手中。附带说一句,假如用户能得到SQL Server的用户名口令(sa 的),进入数据库中可以履行随意率性的dos敕令如查看c:文件、建立和删除目录等,那样全部Windows系统都不安然了(此种措施迫害性更大年夜,恕作者不公布出来)。

作者曾经偶尔在网上看到过海内某个大年夜型网站有同样的问题,而且密码也是和笔者一样写在JavaBean中的,极不安然。

办理措施:IIS曩昔一个有效地办理asp的破绽便是将asp法度榜样零丁放置一个目录,目录设置上用户权限只能履行不能读取。在jsp情况下同样可以经由过程设置办事器的情况来办理这个问题,简单的说便是将一些对照紧张的目录如WEB-INF、classes等设置上造访的权限,不容许读而取只容许履行。以apache 下办理为例,可以在httpd.conf文件中添加一目录WEB-INF并设置Deny from all等属性。

另一种对照笨的办理措施便是在每个紧张目录下添加一个默认肇端页面如inde.htm等,这样读取目录就会返回给造访者这个文件而不是其它了。建议采纳的一种措施。

更为紧张的是密码的保致意题,笔者曩昔在asp 开拓中是采纳密码文件保存在系统目录如WINNT 下的,然后写了一个com来读取这个文件,这样就算看到了asp源代码也不知道数据库信息了。在jsp中我们也可以写一个property文件,放置在WINNT系统目录下,然后用Bean来读取数据库信息,这样经由过程源代码知道了数据库信息存在WINNT中的.property文件里面,但也很难造访它,这样就算源代码被人知道最少数据库是安然的。

4、文件不存在引起的绝对路径裸露问题

这个问题信托大年夜家都对照认识了,由于微软IIS 中也有对照多的类似问题如微软IIS5.0中的*.idc裸露绝对路径破绽。同样的这些问题现在也转到了jsp情况中,这个破绽裸露了web法度榜样的绝对硬盘地址,和其他破绽结合就具有对照大年夜的迫害了,由于这个破绽今朝还没有在国外安然网站上看到,而站长也没有逐一测试过所有的jsp办事器法度榜样,以是没有法子奉告大年夜家那些有这个破绽了,大年夜家可以在自己的web办事器上测试看看。

例子:在特定的办事器软件下,造访一个不存在的jsp文件如 http://localhost:8080/fdasfas.jsp,就会返回java.servlet.ServletEception: java.io.FileNotFoundEception: c:webappfadssad.jsp (???????????)这样的差错,这样就可以知道你网站在c:webapp目录下,大概一样平常人不太在意,然则对付一个黑客来说便是很有赞助了。

缘故原由:认真jsp 履行的相关Servlet中处置惩罚非常的时刻没有过滤掉落这种环境。

办理措施:一是下载最新的补丁;因为笔者当时的web 办事器软件没有这个补丁,颠末一段光阴的苦楚煎熬后,总算找到了别的一种措施,便是找到办事器软件的jsp 履行映射Servlet文件(当然是class 后缀的),将它用JAD软件反编译,在反编译后的源代码中找到处置惩罚Eception的措施,然后将措施中的处置惩罚部分整个注释掉落,并将哀求导向到一个自定义的掉足页面中,这样问题就办理了。

二、远程法度榜样履行类

这类破绽的特征便是可以经由过程url 地址在浏览器中履行随意率性办事器上的敕令和法度榜样,从而引起安然问题。如Allaire JRUN 2.3 远程履行随意率性敕令破绽、iPlanet Web Server 4.x存在一个缓冲区溢出漏洞等等。

例子:Allaire 的 JRUN 办事器 2.3上输入下面的url地址http://jrun:8000/servlet/jsp/../../path/sample.txt,可以造访到WEB目录以外的文件,假如是exe文件,还有可能会引起履行。

缘故原由:假如URL哀求的目标文件应用了前缀"/servlet/",则JSP 解释履行功能被激活。这时在用户哀求的目标文件路径中应用"../",就有可能造访到 WEB 办事器上根目录以外的文件。目标主机上使用该破绽哀求用户输入孕育发生的一个文件,将严重要挟到目标主机系统的安然。

办理措施:安装最新的补丁。

三、其他种别

这些类其余范围就有点大年夜了,可以包括数据库如SQL Server、Oracle 、DB2等的破绽,也可以包括操作系统如WindowsNT/2000、Linu等的破绽。这些器械的破绽可以说都是致命的,如使用Linu的某些破绽可以随意马虎的Su为治理员来远程节制办事器,得到系统的完全节制权限,这样要得到jsp源代码或者摧毁办事器比踩逝世一只蚂蚁还要轻松的多。

四、全文总结

经由过程上面内容我们可以看出jsp同asp一样照样存在着很多安然上的问题的,客不雅的说,办事器软件的开拓商在内部测试中弗成能将系统中的所有bug 找出来,纵然宣布了软件后,被发明的破绽也只会是此中的很小一部分,将来还会赓续的有新的安然问题呈现,以是我们必须时候前进鉴戒,并留意自己网站的安然。

一个好的建议便是多看安然文章,这些安然文章一样平常都邑有具体的信息如软件的版本号、破绽缘故原由等等,最紧张的是还附带了办理法子或者是补丁的下载链接,保举的安然站点是海内的安然站点www.cnns.net或者国外的www.securityfocus.com站点;别的一个好的建议便是多装补丁法度榜样,造访自己所应用的软件公司主页,从那上面得到最新的补丁法度榜样,做得对照好的便是微软的站点,安然看护布告和补丁都分外及时。

着末想用一句话作为全文的结尾:一个优秀的黑客不必然是个好的jsp 法度榜样员,一个优秀的jsp法度榜样员必然如果个好的准黑客。

您可能还会对下面的文章感兴趣: