Tomcat漏洞说明与安全加固

Tomcat是Apache软件基金会的一个免费的、开放源码的WEB应用服务器,能够运行在Linux和Windows等多个平台上,因为其性能稳定、扩展性好、免费等特色深受广大用户的喜好。目前,互联网上绝大多数JAVA WEB应用都运行在Tomcat服务器上。html

Tomcat做为Web应用的载体,一旦出现安全问题,那么运行在其上的Web应用的安全也没法获得保障,因此研究Tomcat的漏洞与安全性就很是有必要。本文经过实例详细的讲述了关于Tomcat攻防两个方面。笔者首先在攻击者的角度,以一个在渗透测试过程当中常常利用的Tomcat漏洞做为实例,来详细描述攻击者是如何利用Tomcat服务器漏洞来入侵网站,并最终彻底控制服务器的,而后又以网络安全管理人员的角度,针对Tomcat的特色,详细地介绍了如何对Tomcat进行安全加固。java

利用Tomcat管理后台配置弱点渗透网站实例web

Tomcat默认存在一个管理后台,默认的管理地址是http://IP或域名:端口号/manager/html。经过此后台,能够在不重启Tomcat服务的状况下方便地部署、启动、中止或卸载WEB应用。可是,若是配置不当的话就存在很大的安全隐患。攻击者利用这个弱点能够很是快速、轻松地入侵一台服务器,下面咱们来看一个实例。shell

目标IP:192.168.30.128数据库

目的:彻底控制服务器,获取到管理员权限apache

渗透过程:tomcat

如今咱们来访问http://192.168.30.128:8080/manager/html,服务器会提示输入帐号和密码,如图1所示。安全

那么咱们如何获取到这个用户名和密码呢?目前共有三种方法能够选择:服务器

1、若是采用的是运行在Windows平台上的Tomcat安装版,而且版本在Tomcat 5.5.0 to 5.5.28或Tomcat 6.0.0 to 6.0.20之间,咱们能够利用CVE-2009-3548这个漏洞来登陆后台。受该漏洞影响的Tomcat版本若是在安装时不更改,那么Tomcat默认会创建一个名为“admin”,密码为空的具备管理权限的帐号。下图2是tomcat安装版5.5.27的默认tomcat-users.xml配置文件:网络

注:Linux平台及Windows平台免安装版本不受该漏洞影响。

2、若是采用相似“tomcat”、“654321”等这种很容易让人猜到的字符做为密码的话,咱们能够直接猜想出该后台的帐号和密码。

3、若是前两种方法都没有效果的话,咱们能够采用暴力破解的方法来破解帐号和密码,成功率取决于字典是否强大。在Windows和Metasploit下都有这样的工具,下面咱们来演示如何利用Metasploit下的工具暴力破解Tomcat后台帐号、密码。
首先打开Metasploit控制台,输入“use auxiliary/scanner/http/tomcat_mgr_login”,而后设置相应的配置信息,可设置的信息以下图3所示。

设置好后,输入“run”命令开始执行脚本。由于密码比较简单,因此很快就破解成功了,如图4所示。

 

如今咱们获取到了Tomcat管理后台的帐号和密码,能够直接登陆后台,上传一个war格式的木马,这样咱们就获得了一个webshell,如图5所示

 

从图6咱们能够看到,Tomcat是以system权限运行的,这是系统最高权限。所以,咱们不须要提权就能够直接添加后门帐号。

 

从上图7咱们看到成功添加了一个名为jspshell的管理员组帐号,而且目标服务器开启了3389端口,咱们能够经过远程桌面来登陆,如图8所示。

 

到此为此,这台服务器已经在咱们的彻底控制之下了。从上面的过程当中咱们能够看到这类漏洞的致使的后果很是严重,并且攻击难度较低。实际上,中国电信某业务系统就曾经出现过这样的漏洞,如图9所示。

 

 

 

安全加固

Tomcat的安全加固咱们主要从如下两点考虑:一是Tomcat Web Server自己是否安全,好比是否存在安全漏洞;二是Tomcat Web Server是否提供了可以使用的安全功能,这部分主要是检查Tomcat的配置是否得当,在安全性、可用性、稳定性之间取得平衡。

Tomcat版本的选择与安装注意事项

检查目前使用的Tomcat版本是否存在安全漏洞,若是存在安全漏洞,则须要升级到新的安全版本。在选择Tomcat的版本时,咱们通常选择最新的稳定版本。这样能够在安全性和稳定性之间取得一个很好的平衡。若是要从低版本升级到高版本,建议先在测试环境中测试经过后再进行升级,以免因为兼容性带来的问题。关于Tomcat的安全漏洞能够关注官方发布的安全公告(http://tomcat.apache.org/security.html),也能够关注一些漏洞发布平台的最新Tomcat漏洞信息。

在安装时使用自定义的安装路径,并自定义WEB根目录。能够在Tomcat安装目录的conf目录下的server.xml中修改默认WEB根目录。打开server.xml,找到以下图10所示的内容:

在</Host>以前加入相似如下内容:

<Context path="" docBase="D:/javaweb" debug="0" reloadable="true" crossContext="true" />

上面语句的做用是设置Tomcat虚拟路径,path表明虚拟目录,可自定义,也能够为空,docBase表明物理路径。若是按上面的设置,当访问http://192.168.30.128:8080时实际访问的是D:\javaweb目录下的文件。若是path的值不为空,如设置为path=”java”时,那么访问时应该这样:http://192.168.30.128:8080/java。在修改完成后,须要重启tomcat服务生效。

Tomcat安全配置

a. Tomcat降权

在Windows环境下,Tomcat默认以System权限运行(如图11),这样的后果是一旦成功入侵WEB应用,将直接获得一个高权限的Webshell,而且不须要提权操做就能够彻底控制服务器。

如今咱们来对Tomcat进行降权操做。首先新建一个用户,设置复杂的密码,而且让它不属于任何用户组,如图12所示。

 

接着打开“本地安全策略”--->“本地策略”--->“用户权限分配”,找到“做为服务登陆”项,把刚刚新建的用户添加进去,如图13。

 

而后打开“服务”组件,找到Tomcat的服务,右键“属性”--->“登陆”,用刚新建的tomcat帐号运行Tomcat服务,如图14

 

再找到Tomcat安装目录,只为“Administrators组”和“tomcat”帐户分配彻底控制权限,并将其余帐户权限所有删除。若是不为tomcat帐户分配权限,Tomcat服务将没法启动。而后须要以最小权限原则为Tomcat日志目录和WEB目录单独分配权限,日志目录只须要分配“读取”和“写入”权限便可。

注:WEB目录权限分配可依据如下原则:有写入权限,必定不要分配执行权限;有执行权限,必定不要分配写入权限。

网站上传目录和数据库目录通常须要分配“写入”权限,但必定不要分配执行权限,其余目录通常只分配“读取”权限便可。配置好后,须要重启Tomcat服务才能生效。

b. Tomcat日志安全配置

不论在那种服务器上,日志都是一个很是重要的部分,咱们须要对它严加保护,在Tomcat上也是如此,它的日志默认保存在Tomcat安装目录的logs目录下。要注意的是Tomcat默认并无开启访问日志,因此咱们须要手工开启它。打开server.xml,找到以下代码,去掉它们的注释,具体以下图16所示.

而后修改日志的默认保存路径,并设置只容许系统管理员有日志保存目录的彻底控制权限,tomcat帐户有“读取”和“写入”权限便可,如图17所示

 

c. 删除默认文档和示例程序

若是没有自定义WEB目录,还须要将默认WEB根目录下的servlets-examples和tomcat-docs目录及其及下的全部文件都删除。以免形成没必要要的信息泄露或其余漏洞。servlets-examples和tomcat-docs目录下的一些样例都曾出现过安全漏洞,如CVE-2007-2449和CVE-2007-1355。

d. Tomcat默认管理后台安全配置

Tomcat默认存在一个管理后台,若是配置不当的话会引发很是严重的安全漏洞。在最开始的实例中咱们就是利用该漏洞成功入侵目标服务器的。所以,咱们很是有必要对它进行安全加固。通常状况下咱们不须要该功能,因此建议删除该管理页面。方法是将%tocmat_home%/conf/Catalina/localhost目录下的manager.xml删除掉。

若是必定要使用的话,建议将该manager.xml的文件名修改成一个难猜想出来的文件名,而且找到Tomcat安装目录的conf目录下的tomcat-user.xml,设置一个复杂的管理员帐号和密码。

相关文章
相关标签/搜索