在用JSP制作的电子商务网站多如牛毛。但是对于JSP网站而言,安全性真的能够让人放心吗?面对层出不穷的黑客攻击和病毒袭击,JSP网站的服务器能够比其他网站的服务器器更加安全吗?前段时间,应朋友之邀,我对他们托管的三台服务器的主机进行了测试,发现了JSP网站存在的几个问题。
  入侵测试第一步:扫描

  扫描是入侵的第一步,他能够让您对即将入侵的目标有一个全面的了解。同时扫描更有可能发现扫描对象的漏洞,为入侵提供一个指导方向。

  朋友的两台服务器为Linux,一台为Windows系统,在路由器后面更有一台Cisco PIX 525对三台主机进行保护,只允许外部用户连接不同主机的部分端口,例如80,25,110。

  根据检测,Cisco PIX防火墙过滤规则配置比较严密,基本上没有多余端口允许外部用户访问。细致分析后,我发现,目标网络的主机通过地址转换来提供对外访问,内部使用192.168.*.*地址段。

  先不考虑那么多,找个扫描软件来看看主机的安全情况。我找来了X-Scan,在外部对这几台主机进行了端口扫描之后,生成了一份关于端口的报表,发现其中有一个Tomcat服务器,解释的自然就是JSP文档了。

  小知识:

  Tomcat Web服务器是一款开源的适合于各种平台的免费网络服务器。eBay.com和Dell 电脑等知名网站都采用或曾采用Tomcat的container容器执行Servlet 和JSP。

  看来,只能通过Web服务进行间接攻击。首先检查TCP 80端口的服务。我发现,新闻搜索的功能是由端口8080提供的,输入http:// 202.103.*.168:8080/之后,得到了一个系统管理登录页面,简单地测试了一下,输入“test/test”作为“用户名/口令”,似乎认证成功,但实际上并不能进入下一个页面。

  专家支招:对于扫描来说,他很容易暴露我们网站的弱势方面。应对扫描,我们能够架设一个蜜罐来误导扫描者,蜜罐能够让系统伪装成到处是漏洞,从而遮蔽真正存在的漏洞,也能够伪装成没有任何漏洞,让入侵者不知道从何入手(在去年第47期《电脑报》中,我们对制作蜜罐进行了介绍)。

  入侵测试第二步:漏洞尝试

  尝试JSP各种已知漏洞,这个是在扫描结果中无法获得任何有效信息指导入侵的情况下,被迫使用的方法。这种方法虽然效果不一定好,但是往往能够起到意想不到的效果,从而让入侵继续下去。


  我进行了JSP大小写的测试,因为JSP对大小写是敏感的,Tomcat只会将小写的jsp后缀的文档当作是正常的JSP文档来执行,假如大写了就会引起Tomcat将index.JSP当作是个能够下载的文档让客户下载,若干测试后,我发现这个方法并不奏效,可能管理员已在服务器软件的网站上下载了最新的补丁。

  我发现大部分的JSP应用程式在当前目录下都会有一个WEB-INF目录,这个目录通常存放的是JavaBeans编译后的class 文档,假如不给这个目录配置正常的权限,任何的class就会曝光。

  而采用JAD软件对下载的class文档反编译后,原始的Java文档甚至变量名都不会改变。假如网页制作者开始把数据库的用户名密码都写在了Java代码中,反编译后,说不定还能看到数据库的重要信息。那么,怎么得到这些文档呢?

  Tomcat版本的缺省“/admin”目录是很容易访问的。输入:http://202.103.*.168/admin/,管理员目录赫然在列。默认情况下,“User Name”应该是admin,“Password”应该是空,输入用户和密码后,并点击“Login”按钮,不能进入,陆续使用了几个比较常见的密码,也无济于事。

  默认情况下,Tomcat打开了目录浏览功能,而一般的管理员又很容易忽视这个问题。也就是说,当需要的资源直接映射到服务器上的一个目录时,由于在目录中缺少缺省的index.jsp等文档,Tomcat将不返回很难找到资源的404错误,而是返回HTML格式的目录列表。

  想到了这点后,我打开刚才用X-Scan扫描后生成的报表文档,找到“安全漏洞及解决方案”栏目,看到了几个可能会有CGI漏洞的目录。在地址栏输入其中之一,返回结果如图1所示。


  一些很典型的JSP文档和JS文档都列出来了。大喜之下,随便选择一个文档,点击右键,然后,选择“用FlashGet下载全部链接”选项,于是,这个目录下的任何文档都被我下载到了本地。

  其中最有价值的是个名字为dbconn.js的文档,看来程式设计者是为了方便省事,把一些数据库连接的密码和连接地址都写在里面了(这是很多研发者可能会忽略的问题)。但是,我现在最关心的还是Tomcat的管理员密码。

  简单破解后,发现Tomcat系统中的admin用户使用了很简单的口令:web123456。利用这个漏洞,有了这个密码,下面的工作就相对简单了。

  专家支招:对于网站中的漏洞,我们要实时打上各种补丁,然后对几个已知的安全弱势方面进行加强,比如我们能够将“/admin”目录进行修改,让入侵者不容易找到管理路径。然后关闭Tomcat的目录浏览功能,让入侵者的漏洞尝试完全失败。

  入侵测试第三步:注入攻击

  很多网站对于注入防范做得都很不到位,注入攻击能够让网站暴露出自己的数据库信息以至于暴露数据库表中的管理员账号和密码。


  重新登录Tomcat的管理界面,点击“Context (Admin)”这个链接,列出了WEB目录下的一些文档和目录的名称,现在就能够对Tomcat的Context进行管理,例如查看、增加、删除Context。

  回到Tomcat的管理界,我发现了一个上传文档的组件,并且网站更有一个论坛。于是,我编写了一个input.jsp文档,并将他当作一般的Web 应用程式,通过上传的组件上传到对方的WEB目录里。打开input.jsp这个页面(图2)。

  网页对查询窗体不会做任何输入验证,但是对用户名称的窗体则会。将数据填入窗体,来测试一下网页的漏洞,例子如下:

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!