`
lz726
  • 浏览: 333435 次
  • 性别: Icon_minigender_2
  • 来自: 福建,福州
社区版块
存档分类
最新评论

全程追踪入侵JSP网站服务器

阅读更多

无意中搜索到的一文章,感觉不错,转来学习了~

 

在用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)。
  

  网页对查询窗体不会做任何输入验证,但是对用户名称的窗体则会。将数据填入窗体,来测试一下网页的漏洞,例子如下:
  (1)将<script language="javascript">alert(document.cookie)</script>填入搜索字段,以便用XSS 来显示进程的cookie。
  (2)将<iframe src=http://jakarta.apache.org></iframe>填入搜索字段来示范HTML 注入攻击。
  通过这些方法,我得到了一些论坛的用户信息,当然,这些都是针对JSP做的一些测试,以验证Web应用程序中的所有输入字段。有了用户信息,却没有密码,怎么办?在登录时,我发现了一个8888端口,这会是个什么服务呢?
  专家支招:在网页连接数据库的设计中,网页设计人员要加入对一些敏感符号的审核机制,屏蔽一些在数据库中有作用的符号,这可以在很大程度上成功防御注入攻击。
  入侵第四步:攻其“软肋”
  根据入侵的逐渐深入,系统存在的安全问题也渐渐清楚,下面就是针对网站的安全“软肋”进行攻击。一般针对安全“软肋”的攻击会使入侵成功。
  打开地址后,我发现这个端口运行的是Apache+PHP。也就是说,这台主机还可以编译PHP。从经验分析来看,管理员在JSP主机上同时安装PHP的主要目的可能是为了管理MySQL数据库。因此,这个端口很可能有phpMyadmin这款MySQL数据库管理软件。这个端口上会不会有数据库管理目录呢?
  果然不出我所料,在输入这个目录之后我发现,我进入了一个phpMyadmin的管理界面,可以对MySQL数据库进行任意操作。它支持从本地操作系统读入或者写入数据。更不可理解的是,管理员居然用root账户写在了数据库链接里面,想不控制这个数据库都不行了。
  打开其中的一个数据库,在“SQL”中输入“SELECT * FROM `administer`”,administer表中的数据全部显示出来了。和我前面用JSP探测的用户类型大致一致。至于他们的表和数据的删改权限,现在则完全在我的掌握之中了。
  专家支招:使用了一些软件的时候,我们尽量修改它的默认目录,将它改为一个不容易被猜解到的名字。同时在访问该目录的时候加入密码审核机制,就算入侵者找到了这个管理目录也无法获得进入目录的密码。

评论

相关推荐

    Jsp动态显示服务器时间

    Jsp 动态显示服务器时间 Jsp 动态显示服务器时间是指在 JSP 页面上实时显示当前服务器的时间。实现这种功能需要使用 JavaScript 和 Ajax 技术。下面是实现 Jsp 动态显示服务器时间的详细步骤和知识点总结。 一、...

    检测JSP服务器内存

    在IT行业中,尤其是在服务器管理与优化领域,对JSP(JavaServer Pages)服务器的内存进行检测是至关重要的任务。这关系到服务器的性能、稳定性和资源利用率。本篇将详细探讨如何利用Ajax(Asynchronous JavaScript ...

    JSP项目开发全程实录(完整)

    "JSP项目开发全程实录(完整)"是一份详细的学习资源,旨在帮助开发者从头到尾了解并掌握JSP项目开发的全过程。 一、JSP基础 JSP由HTML、Java脚本元素和JSP动作组成,它允许开发者将静态内容和动态逻辑混合在一起。...

    jsp网站源码jsp网站源码

    JSP(Java Server Pages)是Java平台上的一个服务器端脚本语言,主要用于创建动态网页。JSP技术由Sun Microsystems公司在1999年推出,它允许开发者将HTML代码与Java代码相结合,以实现动态网页的生成。在JSP中,HTML...

    jsp播放服务器端视频

    在探讨“jsp播放服务器端视频”的主题时,我们首先需要理解JSP(JavaServer Pages)是一种基于Java技术的服务器端脚本语言,用于创建动态网页。JSP将HTML标记、Java代码片段以及预定义的动作结合在一起,使得网页...

    图解Windows Server 2008服务器操作系统中搭建JSP网站.pdf

    通过细致的截图,介绍了MSServer2008服务器系统中如何搭建web服务器角色(使用IIS 7.0),如何安装调试MSSQL数据库服务器,如何安装调试apache tomcat服务器,如何安装...过程详细,从零开始到正常运转JSP服务器全过程。

    jsp 下载服务器上文件的超简单网页全套源码

    【标题】"jsp 下载服务器上文件的超简单网页全套源码" 提供了一种简易的方法,让初学者能够理解并实现使用JSP技术在Web服务器上实现文件下载功能。这个源码包可能是针对那些刚接触Java Web开发,对JSP、Servlet有...

    jsp(服务器)与android(客户端)交互

    本文将深入探讨如何在JSP(Java Server Pages)作为服务器端与Android作为客户端之间进行有效的数据通信,涵盖从环境搭建到具体实现的全过程。 ### 一、JSP服务器端的设置与功能实现 #### 1. Web项目搭建 首先,在...

    JSP动态网站源代码

    "JSP动态网站源代码" JSP动态网站源代码是基于Java技术的动态网页开发解决方案。JSP(Java Server Pages)是一种服务器端脚本语言,用于生成动态网页内容。下面是JSP动态网站源代码相关知识点的详细解释: 1. WEB...

    动态显示JSP服务器内存的Ajax程序 图像版_systemjc

    在IT行业中,动态显示JSP服务器内存的Ajax程序是一个实用的技术方案,主要用于实时监控服务器的内存使用情况。本文将深入探讨这一技术,并结合"图像版_systemjc"这一具体实现进行详细解析。 首先,JSP(JavaServer ...

    jsp探针(服务器探测器)

    **JSP探针与服务器探测器** JSP(JavaServer Pages)探针是一种用于服务器监控和诊断的工具,它能够帮助管理员获取服务器的详细运行状态信息。这种探针通常包含一系列精心设计的JSP页面,这些页面通过执行特定的...

    JSP服务器架设JSP服务器架设.doc

    JSP服务器架设JSP服务器架设

    远程JSP服务器文件管理工具WEB工程源码

    实现一个易于使用的管理远程 JSP 服务器文件的工具, 功能包括: 查看目录树, 浏览/下载文件, 删除文件, 重命名文件, 直接修改文件的内容; 内置 GZIP 压缩过滤器加快网页传输. 我们租用虚拟主机或者建立自己企业的...

    JSP项目开发全程实录源码06-10

    《JSP项目开发全程实录源码06-10》涵盖了多个基于JSP的典型应用项目,包括办公自动化、物流信息网、网络在线考试、BBS论坛和博客系统。这些项目代表了JSP在实际开发中的常见应用场景,是学习和理解JSP技术及其在Web...

    JSP+SQL SERVER200网站全程配置

    压缩包内的"JSP网站全程配置2.avi"和"JSP网站全程配置1.avi"很可能是系列教学视频,逐步讲解了从搭建JSP开发环境(如安装Apache Tomcat服务器,配置Java Development Kit,设置系统环境变量)到编写JSP页面,再到...

    推技术实现服务器向jsp页面推动数据

    【推技术实现服务器向jsp页面推动数据】 在Web开发中,传统的HTTP协议是基于请求-响应模型的,即客户端(浏览器)发起请求,服务器端处理并返回响应。然而,有些场景下我们需要服务器主动向客户端推送数据,而不是...

    JSP项目开发全程实录前三章PDF

    《JSP项目开发全程实录》是一本专为Java服务器页面(JSP)开发者编写的实战指南,前三个章节涵盖了JSP开发的基础和关键概念。这本书的目的是通过实际的项目开发过程,帮助读者掌握JSP技术,提升Web应用开发技能。 ...

    jsp服务器时间倒计时完整实例源代码

    jsp服务器时间倒计时完整实例源代码 本资源提供了一个基于JSP的服务器时间倒计时实例源代码,供初学者学习和参考。下面是对该资源的详细分析和知识点总结: 知识点1:JSP获取服务器时间 在JSP中,获取服务器时间...

    java,jsp读取远程图片到本地服务器

    在Java和JSP开发中,有时我们需要处理在线编辑器上传的内容,这可能涉及到从Web页面中获取远程图片并将其保存到本地服务器。这样的功能对于确保网站的性能和用户体验至关重要,因为将图片本地化可以减少加载时间,...

Global site tag (gtag.js) - Google Analytics