jsp安全问题及其解决建议__教程 |
|
日期:2007-5-20 1:20:43 人气:51 [大 中 小] |
|
|
|
作者曾经偶然在网上看到过国内某个大型网站有同样的问题,而且密码也是和笔者一样写在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程序员一定要是个好的准黑客。 |
|
出处:本站原创 作者:佚名 |
|
|