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

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

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

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

目标IP:192.168.30.128

目的:完全控制服务器,获取到管理员权限

渗透过程:

现在我们来访问http://192.168.30.128:8080/manager/html,服务器会提示输入账号和密码,如图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平台免安装版本不受该漏洞影响。

二、如果采用类似“tomcat”、“654321”等这种很容易让人猜到的字符作为密码的话,我们可以直接猜测出该后台的账号和密码。

三、如果前两种方法都没有效果的话,我们可以采用暴力破解的方法来破解账号和密码,成功率取决于字典是否强大。在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,设置一个复杂的管理员账号和密码。

转载于:https://www.cnblogs.com/milantgh/p/3660106.html

Tomcat漏洞说明与安全加固相关推荐

  1. OPenSSL漏洞原理与安全加固

    openSSL漏洞原理及安全加固 2014年4月8日晚,互联网爆出了又一重量级安全漏洞,即CVE-2014-0160,通俗来讲就是OpenSSL出现了安全漏洞. 说这个漏洞前,先介绍一下OpenSSL ...

  2. Apache Tomcat 漏洞利用

    Apache Tomcat 漏洞利用 参考链接1 参考链接2 通过对apache tomcat的枚举和利用,我们可以从中找出漏洞,然后得到shell 枚举 在 Tomcat6 之前的某些版本中,我们可 ...

  3. tomcat ajp协议安全限制绕过漏洞_国家信息安全漏洞共享平台发布Apache Tomcat漏洞安全公告...

    2月22日消息 国家信息安全漏洞共享平台(CNVD)近日发布了一份关于 Apache Tomcat 存在文件包含漏洞的安全公告,具体如下: 安全公告编号:CNTA-2020-0004 2020 年 1 ...

  4. Tomcat漏洞修复方法【补丁下载及安装详细流程】

    目录 访问tomcat的官网漏洞补丁网址 会看到各个版本的tomcat的漏洞修复记录及方法 例如 搜索CVE-2016-6797漏洞的补丁 点击revision后的序列号 进入补丁修复界面,进来之后, ...

  5. Tomcat漏洞ip:port/manager/html

    使用tomcat发布应用程序,使用ip:port/manager/html访问,出现弹出登录界面或者代码内容漏洞,解决方法如下:(建议修改前先备份) (1)删除webapps文件夹下manager文件 ...

  6. metasploitable靶机 nessus 扫描 tomcat 漏洞复现幽灵猫

    metasploitable靶机 tomcat 简介 Tomcat是Apache软件基金会(Apache Software Foundation)项目中的一个核心项目,由Apache.Sun和其他一些 ...

  7. 记一次tomcat漏洞修复补丁升级

    tomcat有安全漏洞,现在用的版本是tomcat8.5.3. 其中有一个漏洞描述是这样子的:Apache Tomcat Security Manager 安全限制绕过漏洞(CVE-2016-5018 ...

  8. Tomcat漏洞复现

    目录 一.Tomcat任意文件读写漏洞(CVE-2017-12615) 1.漏洞描述 2.影响范围 3.漏洞分析 4.环境搭建 5.漏洞复现 二.Tomcat文件读取/文件包含漏洞(CVE-2020- ...

  9. 网络系统安全——MS15_034漏洞利用与安全加固

    Kali   192.168.124.162 Windows server 2008   192.168.124.169 检查2008服务器的IIS网站是否正常,进入2008服务器,使用ie浏览器访问 ...

最新文章

  1. 5、【华为HCIE-Storage】--RAID类型
  2. GOS系列之删除附件
  3. k8s pod的三类调度策略:资源限制策略、nodeSelector标签选择器、硬/软亲和性
  4. HTML的相关路径与绝对路径的问题---通过网络搜索整理
  5. mysql保存plc数据_MySQL空间数据的保存
  6. 如何用 IDEA 提升十倍开发效率?
  7. Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%
  8. 为什么要使用MQ消息中间件?
  9. 含HTML标记的内容分页 (C#)
  10. SpringMVC的URL路径映射@RequestMapping
  11. 此声明没有存储类或类型说明符
  12. Modules Of YoloV5 Architecture
  13. GPS模块数据放入谷歌地图显示,不准
  14. Kettle使用教程(一)—— 在MacOS系统中安装 Kettle
  15. 【案例学习】最大锁具制造商怎样使用 Docker?
  16. linux制作xp u盘启动盘,ultraiso制作u盘启动盘linuxu大侠u盘装xp
  17. 对webkit-font-smoothing和-moz-osx-font-smoothing的理解
  18. Ubuntu rar 解压乱码问题解决
  19. 怎么给HTML文件加背景,设置文件夹背景,如何设置文件夹背景颜色
  20. 【笔记】CUDA(二) - (异步)SIMT 架构

热门文章

  1. 比特币挖矿——区块链技术
  2. 如何设置Java Spring Boot JWT授权和认证
  3. Linux二进制导出配置文件,Go打包二进制文件的实现
  4. 循环map_python函数 map函数—比for还好用的循环
  5. 学习web前端难不难
  6. php-fpm慢执行日志
  7. MySQL5.7配置日志
  8. Windows Azure Pack与SCVMM标签解析分享
  9. 域名年龄-SEO搜索引擎优化
  10. 【android】java.lang.NoClassDefFoundError或classnotfount等异常错误