漏洞复现 | Tomcat漏洞复现

admin 2021年2月5日09:25:31评论5 views字数 3071阅读10分14秒阅读模式

Tomcat服务器

 

0x01前言:

Tomcat服务器是一个免费开放源代码的web应用服务器,属于轻量级应用服务器,主要在中小型系统和并发访问用户不是很多的场合下使用,是开发和调式JSP程序的首选。

Tomcat具有JSP环境的Servlet容器,Servlet容器是代替用户管理和调用Servlet的运行时外壳作为Web服务器方面,Tomcat处理静态HTML页面时不如Apache迅速,也没有Apache健壮,所以我们一般将TomcatApache配合使用,让Apache对网站的静态页面请求提供服务,而Tomcat作为专用的JSP引擎,提供JSP解析,以得到更好的性能。 

0x02运行原理:Tomcat使用java语言来编写,tomcatphp一样都是用来处理动态程序的(也可以解析静态资源)。

 tomcat可以处理.jsp或者.do结尾的动态文件,处理时并不是tomcat本身去处理,而是交给后端的jvm来处理,也就是java虚拟机来处理,处理之前先装入tomcat的类文件,然后由jvm来处理,所以安装tomcat必须先安装JDK(Java Development Kit)

 

常见的Tomcat中间件漏洞

 

1、tomcat弱口令漏洞

2、CVE-2017-12615远程代码执行漏洞

3、CVE-2020-1938文件包含漏洞

 

漏洞复现 | Tomcat漏洞复现

 

0x03tomcat弱口令漏洞

 

漏洞原理

Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下。若后台管理页面存在弱口令,则可以通过爆破获取密码。

 

漏洞复现

在vulhub靶场搭建环境

漏洞复现 | Tomcat漏洞复现

 

直接访问后台管理界面,利用msf工具爆破弱口令

漏洞复现 | Tomcat漏洞复现

 

漏洞复现 | Tomcat漏洞复现

 

使用tomcat/tomcat,成功登录后台界面

漏洞复现 | Tomcat漏洞复现

 

准备jsp文件,内容如下

<%

if(request.getParameter("f")!=null)(new java.io.FileOutputStream(application.getRealPath("\")+request.getParameter("f"))).write(request.getParameter("t").getBytes());

%>

在已经安装java 环境的情况下,进入jsp文件所在目录,使用命令 java -cvf to.war ./就可以将当前目录的所有文件打包到to.war包中,一个正常的war包中还应该包含meta-inf,web-inf,在生成目录中应该包含这两个文件,才能生成可用的war

 

to文件上传成功

漏洞复现 | Tomcat漏洞复现

 

直接访问to文件,返回404

漏洞复现 | Tomcat漏洞复现

 

直接访问to.jsp文件(指定文件时,才能访问成功)

漏洞复现 | Tomcat漏洞复现

此时直接输入http://127.0.0.1/to/to.jsp?pwd=023&i=ls验证,执行系统命令

漏洞复现 | Tomcat漏洞复现

修复方案

1、在系统上以低权限运行Tomcat应用程序。创建一个专门的 Tomcat服务用户,该用户只能拥有一组最小权限(例如不允许远程登录)。

2、增加对于本地和基于证书的身份验证,部署账户锁定机制(对于集中式认证,目录服务也要做相应配置)。在CATALINA_HOME/conf/web.xml文件设置锁定机制和时间超时限制。

3、以及针对manager-gui/manager-status/manager-script等目录页面设置最小权限访问限制。

漏洞复现 | Tomcat漏洞复现

 

0x04CVE-2017-12615远程代码执行漏洞

 

漏洞原理

首先要了解DafaultServlet和JspServletDafaultServlet的作用是处理静态文件,而JspServlet的作用是处理jspjspx文件的请求,以下是默认配置情况:

漏洞复现 | Tomcat漏洞复现

 

DafaultServlet可以处理PUT或者DELETE请求,而JspServlet中没有PUT上传的逻辑,所以PUT的代码一般只存在于DafaultServlet中,如果我们给jsp文件构造后缀名,绕过tomcat检测,那文件就会以DafaultServlet的逻辑去处理请求。

Tomcat运行在windows主机上,DafaultServlet里的HTTP PUT方法一般是不开启的,当readonly处的内容为false时,代表启用了HTTP PUT请求方法,就可以通过构造的攻击请求向服务器上传包含任意代码的JSP文件,造成了任意文件代码执行漏洞

漏洞复现 | Tomcat漏洞复现

 

漏洞复现

搭建vulhub靶场,开启CVE-2017-12615漏洞靶场

漏洞复现 | Tomcat漏洞复现

 

访问http://localhost:8080进入tomcat界面

漏洞复现 | Tomcat漏洞复现

 

此时tomcat服务readonly设置为false,可以通过put/DELETE的方式处理文件

漏洞复现 | Tomcat漏洞复现

准备一个webshell,利用put请求上传jsp文件

 

webshell文件名需要修改后缀名,绕过tomcat的检测。(后缀名方法:1.jsp%20;1.jsp::$DATA;

1.jsp/),利用burp 配置端口,然后直接将wenshell内容send to repeater,返回201说明创建成功

漏洞复现 | Tomcat漏洞复现

 

此时访问http://localhost:8080/1.jsp?pwd=023&cmd=whoami验证,执行系统命令

漏洞复现 | Tomcat漏洞复现

修复方案

1、配置readonly值为True或注释参数,禁止使用PUT方法并重启tomcat
注意:如果禁用PUT方法,对于依赖PUT方法的应用,可能导致业务失效。

2、根据官方补丁升级最新版本

 

漏洞复现 | Tomcat漏洞复现

0x05CVE-2020-1938文件包含漏洞

 

漏洞原理

Tomcat AJP协议由于存在实现缺陷导致参数可控,攻击者利用该漏洞构造特定参数,造成服务器webapp下任意文件读取,若服务器存在文件上传功能,则可实现远程代码实现。

分析源码,Tomcat在处理ajp协议的时候存在漏洞,可以通过request.setAttributeTomcat设置任意request属性(客户端发出请求时,创建request对象,并把请求数据封装到requesst中)

当ajp URI设置为非jsp路径时,tomcat会调用DefaultServlet处理,该类中有以下属性:

javax.servlet.include.path_info;(目录路径)

javax.servlet.include.servlet_path;(项目路径)

DefaultServlet类的getRelativePath方法进行拼接获得path路径,getResource(path)函数直接将path带入,造成任意文件读取,导致web目录任意文件读取漏洞,利用该漏洞成功读取到/WEB-INF/目录下web.xml文件

 

漏洞复现

利用docker拉取镜像,搭建靶场

漏洞复现 | Tomcat漏洞复现

查看镜像

漏洞复现 | Tomcat漏洞复现

运行靶场

漏洞复现 | Tomcat漏洞复现

访问浏览器页面成功,代表靶场搭建成功

漏洞复现 | Tomcat漏洞复现

nmap查看开放的端口,看到8009,8080端口开放

漏洞复现 | Tomcat漏洞复现

进入镜像,写入1.txt文件,内容为“i miss you”,查看目录,看到写入的1.txt文件

漏洞复现 | Tomcat漏洞复现

拉取网上公开的EXP文件

漏洞复现 | Tomcat漏洞复现

查看目录,发现拉取EXP文件成功

漏洞复现 | Tomcat漏洞复现

 

直接使用EXP文件读取刚刚写入文件的内容

漏洞复现 | Tomcat漏洞复现

 

读取WEB-INF下的配置文件

漏洞复现 | Tomcat漏洞复现

 

修复建议

1、对Tomcat版本进行升级

2禁用AJP协议

 

 

漏洞复现 | Tomcat漏洞复现

 

 

 

天磊卫士|专注网络安全服务

咨询热线:400-654-0108

官网:https://www.uguardsec.com

分支机构:深圳、海口、北京、青岛、汕尾

漏洞扫描|整改加固|渗透测试|APP安全评估|安全运维

系统入网|上线安全评估|代码审计|应急响应|应急演练

 

原文始发于微信公众号(天磊卫士安全团队):漏洞复现 | Tomcat漏洞复现

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年2月5日09:25:31
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞复现 | Tomcat漏洞复现https://cn-sec.com/archives/1052424.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息