到网上随便逛逛,我就会发现用JSP制作的电子商务网站多如牛毛,从JSP日渐繁荣的局面来看,适合于各种平台而且免费的Tomcat逐渐成为WEB服务器的一种选择。eBay.com与Dell计算机等知名网站都采用或者曾经采用Tomcat的Container容器执行Servlet 与JSP,可想而知这个服务器软件所具有的前途。那他们的安全性如何呢?一起来看看吧!
小知识:Tomcat是Sun的JSWDK(JavaServer Web Development Kit)中Servlet的运行环境(Servlet容器)。Tomcat的源代码被提供给Jakarta项目,在Open Source的模型下进行进一步的开发。Tomcat是一个Server容器,同样的,EJB运行在EJB的容器中。对于初学者来说,可以这样认为:当在一台机器上配置好Apache服务器,可利用它响应对HTML页面的访问请求。实际上Tomcat部分是Apache服务器的扩展,但它是独立运行的,所以当你运行Tomcat时,它实际上作为一个与Apache独立的进程单独运行的。也就是说当配置正确时,Apache为.HTML页面服务,而Tomcat实际上运行.jsp页面和Servlet。
先看看JSP的安全机制。JSP和PHP、ASP等语言的工作机制不一样,虽然它也是一种WEB编程语言,但首次调用JSP文件其实是执行一个编译为Servlet的过程——敏感部位暴露出来了,如果能够让JSP在编译前被浏览器当作一个文本或其它文件发送给客户端,或在JSP装载的时候不去执行编译好的Servlet,而直接读JSP的内容并发送给客户端,会出现什么问题呢?
对于Tomcat这样公布源代码的程序,若有更多的人使用并研究其代码,则可以找到并修补愈多的安全漏洞。但是,对从来不修补漏洞的人们来说,我就可以利用这些漏洞,做我喜欢做的事情了。
前一段时间应朋友之邀,我对他们托管的三台主机进行了测试,其中两台为Linux,一台为Windows系统,在路由器后面还有一台Cisco PIX 525对三台主机进行保护,只允许外部用户连接不同主机的部分端口,例如80,25,110。根据检测,Cisco PIX防火墙过滤规则设置比较严密,没有多余端口允许外部用户访问。细致分析后,发现目标网络的主机通过地址转换来提供对外访问,内部使用192.168.*.*地址段。先找个扫描软件来看看主机的安全情况。
我找来了X-Scan,在外部对这几台主机进行了端口扫描之后,生成了一份关于端口的报表,发现其中有一个Tomcat服务器,解释的自然就是JSP文件了。
尝试一下通过WEB服务进行间接攻击。首先检查TCP/80端口的服务,发现新闻搜索的功能是由端口8080提供的,输入http:// 202.103.*.168:8080/之后,得到了一个系统管理登录页面,简单地测试一下,输入test/test作为用户名/口令,似乎认证成功,但实际上并不能进入下一个页面。彷徨之间,我进行了JSP大小写的测试,因为JSP对大小写是敏感的,Tomcat只会将小写的JSP后缀的文件当作是正常的JSP文件来执行,如果大写了就会引起Tomcat将Index.jsp当作是一个可以下载的文件让客户下载。经过测试发现这个方法无效,可能管理员已经在服务器软件的网站上下载了最新的补丁。
找了一个朋友的JSP空间,仔细研究后发现大部分的JSP应用程序在当前目录下都会有一个WEB-INF目录,这个目录通常存放的是JavaBeans编译后的Class 文件,如果不给这个目录设置正常的权限,所有的Class就会曝光。而采用JAD软件对下载的Class文件反编译后,原始的Java文件甚至变量名都不会改变。如果网页制作者开始把数据库的用户名密码都写在了Java代码中,反编译后,说不定还能看到数据库的重要信息。那么,怎么得到这些文件呢?思考中……
Tomcat版本的缺省/admin目录是很容易访问的,不知道这个粗心大意的管理员是否做了相关处理。输入:http://202.103.*.168/admin/,管理员目录赫然在列。之后,我看到了“Tomcat WEB Server Administration Tool”的页面,默认情况下,他们的“User Name”应该是admin,“Password”应该是空,输入用户和密码后,并点击“Login”按钮,不能进入,陆续使用了几个比较常见的密码,也无济于事。
默认情况下,Tomcat打开了目录浏览功能,在对多个Resin或Tomcat服务器站点的测试中,我都碰到过管理员忽视这个问题的情况。
小提示:一般可以这么解释:当要求的资源直接映射到服务器上的一个目录时,由于在目录中缺少缺省的Index.jsp等文件,Tomcat将不返回找不到资源的404错误,而是返回HTML格式的目录列表。
我打开刚才用X-Scan扫描后生成的报表文件,找到“安全漏洞及解决方案”栏目,看到了几个可能会有CGI漏洞的目录。在地址栏输入其中之一,感觉是个比较重要的目录。
一些很典型的JSP文件、JS文件都列出来了!大喜之下,随便选择一个文件,点击右键,然后选择“用FlashGet下载全部链接”选项,于是,这个目录下的所有文件都被我下载到了本地,而其中尤其具有价值的是一个名字为Dbconn.js的文件!看来程序设计者是为了方便省事,把一些数据库连接的密码和连接地址都写在里面了(这是很多开发者可能会忽略的问题)。不过,我现在最关心的还是Tomcat的管理员密码!简单破解后,发现Tomcat系统中的admin用户使用了非常简单的口令:WEB123456,可能是管理员对进行口令统一的缘故。尽管外部用户无法直接访问Telnet服务,不过,在我看来,这些口令还是应当被重设为更为强壮的字符串。先不管别人怎么做了,利用这个漏洞,有了这个密码,我就要好好的研究研究Tomcat的管理界面了!
重新登陆Tomcat的管理界面,点击“Context (Admin)”这个链接,列出了WEB目录下的一些文件和目录的名称,我现在就可以对Tomcat的Context进行管理,例如查看、增加、删除Context。这个Context有点类似虚拟目录,于是我可以增加一个Context, 例如“/images”,这是为了避免管理员看出破绽,将它的文档根目录设置为“/”,这样当我访问http://202.103.*.168/admin/时看到的就是系统根目录的列表了!
既然是JSP文件,我就要考虑尝试一下XSS注入、HTML注入、SQL 注入以及命令注入的攻击钢丝了。许多网站都在防范XSS 攻击上存在缺陷,当然,实际的攻击可能并不像前面的示例那么简单,但是,只要在WEB应用程序中有将未过滤的输入回送给用户的缺陷,就可以设计出XSS 攻击的方式。含有容易受到XSS 攻击的WEB 应用程序可以用各种程序语言编写(包括Java),并在任何操作系统上执行。这是一种一般且普遍的网页浏览器脚本问题,而此服务器端的问题主要来自于并未确认及过滤恶意的用户输入。能否在这方面做点文章呢?
回到Tomcat的管理界,无意中发现了一个上传文件的组件,而且这个站点下有个论坛,真乃天助我也!写一个JSP文件弄上去看看,也正好验证一下JSP用户过滤方面的技术。于是,我编写了一个JSP 网页,并将其当做一般的WEB 应用程序,这个JSP网页会接受用户的输入并显示少量的调试信息。通过上传的组件,我将自己精心准备的Input.jsp文件上传到对方的WEB目录里, 打开input.jsp这个页面。
网页上包括两个查询窗体和一个用户名称的输入窗体。前面的两个查询窗体基本是一样的,只不过一个使用HTTP GET,另一个使用HTTP POST。此外,其参数的名称也不同,所以可以一次测试两个窗体,其参数值不会彼此干扰。网页对查询窗体不会做任何输入验证,但是对用户名称的窗体则会。网页上的所有窗体都会自动填入上次传送来的值(如果没有任何上次的值,则会填入Null)。将数据填入窗体,来测试一下网页的漏洞,例子如下:
通过这些方法,我得到了一些论坛的用户信息,当然,这些都是针对JSP做的一些测试,以验证WEB应用程序中的所有输入字段。我的思路是这样的,如果能从第一个浏览器会话中取出URL,包括Jsessionid,然后粘贴到其它浏览器中进行浏览,就能够伪装成其他用户了!
几番轰炸,我制作出了一份精确的字符清单,以测试应用程序需要当成用户输入而接受的所有字符。如果应用程序会接受许多特殊字符,估计会有一些漏洞,这样我就可以获得更大的访问权限。有了用户信息,却没有密码,怎么办?在登陆时,我发现了一个8888端口,这会是个什么服务呢?
疲惫中,我将注意力转移到测试时发现的8888端口,难道是个聊天室?看来Linux下的平台确实有很多让人称奇的地方,打开地址后,我发现这个端口运行的是Apache+PHP,也就是说这台主机还可以编译运行PHP!不过从经验分析来看,管理员在JSP主机上同时安装PHP的主要目的可能是为了管理MySQL数据库,因此,这个端口很可能有phpMyadmin。再联想到前面发现的漏洞,这个端口上会不会有个数据库管理目录呢?测试后果然不出所料,在输入这个目录之后进入了一个phpMyadmin的管理界面,可以对MySQL数据库进行任意操作。它支持从本地操作系统读入或者写入数据。更不可理解的是,管理员居然用ROOT账户写在了数据库连接里面,想不控制这个数据库都不行了。
打开其中的一个数据库,在“SQL”中输入“SELECT * FROM `adminuser`”,Adminuser表中的数据全部显示出来了。和我前面用JSP探测的用户类型大致一致。至于他们的表和数据的删改权限,现在则完全在我的掌握之中了。
本来还想测试一下Tomcat下的Invoker Servlet的,不过朋友催地实在太急,也就暂时终止了。不过,从测试过程来看,这些问题都是Tomcat下的一些基本配置问题,很多问题来自安装目录下的Conf子目录下的WEB.xml文件。现在要做的,就是给他们提交一份详细的防范措施了。
- 浏览: 311937 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (410)
- 我的开源项目 (14)
- FFMPEG (54)
- MPEG7/图像检索 (23)
- Live555 (8)
- OpenCV (9)
- 开源多媒体系统 (12)
- J2EE (12)
- RTMP (22)
- 视频质量评价 (47)
- 杂谈/非技术 (22)
- 音频编码 (11)
- 视频编码 (32)
- TinyJPEG (2)
- ffdshow (10)
- MediaInfo (8)
- ImageMagik (2)
- MPC-HC (9)
- XBMC (7)
- Mplayer (3)
- IPTV (5)
- OTT TV (4)
- 超高清/4K (4)
- 综合/IT与广电 (14)
- 网络 (21)
- DirectShow (11)
- 硬件 (5)
- 3D (2)
- 纯编程 (44)
- 开源项目 (13)
- Flash相关 (5)
- 广播电视工程 (4)
- HTML和Javascript (9)
最新评论
发表评论
-
网络视频传输的服务质量(QoS)
2013-09-21 23:57 469QoS(Qualityof Service)服 ... -
RTSP协议学习笔记
2013-09-24 11:22 988第一部分:RTSP协议 一、RTSP协议概述 RTSP ... -
JAVA编写的一个简单的Socket实现的HTTP响应服务器
2013-09-24 15:45 504JAVA编写的一个简单的So ... -
JAVA编写的使用Socket模拟Http的GET操作
2013-09-24 15:53 438JAVA编写的使用Socket模拟Http的GET操作,看后 ... -
基于Socket的文件传输(使用CSocket类)
2013-09-25 18:38 750本软件使用MFC采用面向对象的方法实现了基于Socket的文 ... -
Windows平台下NS2网络仿真环境的搭建
2013-10-02 11:36 554NS2(Network Simulator 2) 是一 ... -
NS2仿真过程中需要的语言及基本组件
2013-10-02 11:50 545本文介绍使用NS2进行网络仿真通常需要使用的语言以及工具(工 ... -
NS2典型例子简单分析
2013-10-02 12:04 670“2-1-1”丢包分析 打开Cygwin.terminal ... -
使用WinPcap编程
2013-10-06 19:47 812创建一个使用 wpcap.dll 的应用程序 用 Micr ... -
C++发送HTTP请求获取网页HTML代码
2013-10-10 00:06 668可以使用CInternetSession类发送HTTP请求获 ... -
计算机三级网络技术备考复习资料
2013-10-25 16:36 1174以前用到的资料,偶尔翻翻还挺有用,记录之。 第一章 ... -
传媒大学媒体中心资源批量获取工具的制作
2013-10-25 17:00 448中国传媒大学媒体中心 ... -
ITU-T Technical Paper: NP, QoS 和 QoE的框架以及它们的区别
2013-10-29 14:11 589本文翻译自ITU-T的Technical Paper:《Ho ... -
ITU-T Technical Paper: QoS 的参数(非常的全,共计88个)
2013-10-29 14:48 580本文翻译自ITU-T的Technic ... -
ITU-T Technical Paper: QoS的构建模块与机制
2013-10-29 17:48 413本文翻译自ITU-T的Technic ... -
ITU-T Technical Paper: QoS 测量 (目标,方法,协议)
2013-10-30 11:23 471本文翻译自ITU-T的Technical Paper:《Ho ... -
ITU-T Technical Paper: 测量QoS的基本网络模型
2013-10-30 18:44 506本文翻译自ITU-T的Technical Paper:《Ho ... -
ITU-T Technical Paper: IP网络测量模型
2013-11-04 13:39 443本文翻译自ITU-T的Technic ... -
ITU-T Technical Paper: IP服务性能模型
2013-11-04 13:51 560本文翻译自ITU-T的Technical Paper:《Ho ... -
ITU-T E.800 有关服务质量(QoS)的术语定义
2013-11-04 19:34 549摘要 ITU-T E.800建议书为 ...
相关推荐
本案例主要探讨了如何使用Android客户端访问Tomcat服务器,实现用户注册、登录功能,并将MySQL数据库中的数据通过ListView组件展示。以下将详细介绍这个过程涉及的关键知识点。 1. **Android网络请求**: Android...
#### 一、Tomcat服务器环境配置 在开始配置Tomcat服务器之前,我们需要确保已经正确安装了Java环境,并且设置了相关的环境变量。以下将详细介绍如何进行这些配置。 ##### 1. 设置环境变量 为了使Tomcat能够正常...
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台...
总之,部署Java Web项目到Tomcat服务器是一个多步骤的过程,涉及到服务器配置、项目打包以及服务器管理等多个环节。理解这些知识点有助于优化开发流程,提高效率。在实际操作中,应根据具体需求选择适合的部署方式,...
在IT行业中,Tomcat服务器是Java Web应用最常用的容器之一,尤其在小型到中型企业级应用中广泛应用。本文将深入探讨“Tomcat服务器集群”和“负载均衡”的概念,以及如何进行相关的配置。 首先,我们要理解什么是...
通过上述步骤,我们成功在一机双Tomcat环境中配置了一个基于Apache+Tomcat的服务器集群。这种方式不仅能够显著提升系统的稳定性和性能,还能实现资源的有效利用。对于处理高并发访问场景或需要提供不间断服务的应用...
了解Tomcat服务器的主要作用 掌握Tomcat服务器的安装与配置 掌握Tomcat安装目录下的主要目录作用 理解JSP页面的执行流程 编写第一个交互式程序
标题中的“Tomcat7本地服务器”指的是Apache Tomcat 7,这是一个开源的、基于Java的Web应用程序服务器,特别适合小型到中型的项目。Tomcat是Java Servlet和JavaServer Pages(JSP)技术的主要实现,它允许开发人员...
在Eclipse中部署Tomcat服务器时,需要正确地配置Tomcat服务器,清除Tomcat服务器的缓存,添加项目路径到Tomcat服务器的配置文件中,并启动Tomcat服务器。按照这些步骤进行,可以确保在Eclipse中部署Tomcat服务器时...
Nginx+Tomcat负载均衡...本文档提供了从 0 开始构建 Nginx WEB 平台、Tomcat WEB 集群、代码发布、Nginx 负载均衡 Tomcat 集群、动静分离、Rewrite 实战等方面的详细指导和实践经验,为企业提供了一个完整的解决方案。
而Tomcat作为一个轻量级的应用服务器,专门用于运行这些动态内容。因此,将两者结合可以充分发挥各自的优势,提高服务器性能。 **整合工作原理:** 当用户发起请求,Apache首先接收请求并判断内容类型。如果是动态...
- `Android 中tomcat搭建本地服務器 - Tomcat小站.mht`:这可能是另一个关于在Android设备上搭建Tomcat服务器的指南。 - `android开发中tomcat服务器怎么设置?的终极解决教程 - 大灰狼教程网.mht`:这个教程可能是...
【标题】"Tomcat服务器开发源码...通过深入学习Tomcat源码,开发者不仅可以提升Java Web开发技能,还能对服务器端软件的设计和实现有更深入的理解,这对于任何想要成为专业Java Web开发者的人都是一次宝贵的学习机会。
- **Context**:在Tomcat中,Context代表了一个Web应用程序,它对应于服务器目录下的一个WAR文件或一个解压的目录结构。 - **Connector**:Tomcat的Connector组件负责接收和响应客户端请求,它支持多种协议如HTTP...
Tomcat是Apache软件基金会下的一个开源项目,它是一个轻量级的应用服务器,特别适合运行Java Web应用。Tomcat基于Java Servlet和Java EE的Web部分标准。 **配置Tomcat服务器** 1. **环境变量**:配置JAVA_HOME指向...
简易模拟tomcat服务器项目源码。java学习CS架构网络编程;简易模拟tomcat服务器项目源码java学习CS架构网络编程;简易模拟tomcat服务器项目源码java学习CS架构网络编程;简易模拟tomcat服务器项目源码java学习CS架构...
标题中的"tomcat服务器"指的是Apache Tomcat,它是一个执行Java Servlet和JavaServer Pages(JSP)的服务器,也是Java EE应用程序的容器。Tomcat与Sun Microsystems(现为Oracle)的Java Servlet和JSP规范兼容,并且...
配置 Tomcat 服务器的第一步是获取 Apache Tomcat 的最新稳定版本。访问官方网址(https://tomcat.apache.org/)下载适合操作系统的二进制文件,下载后解压缩到合适的目录。 2. **启动 IntelliJ IDEA**: 打开 ...
tomcat服务器所需的微软控件,将它安装在WINDOWS/SYSTEM32/下,就可以解决TOMCAT无法启动的难题。