本文介绍: Tomcat 配置两个Connecto,它们分别是 HTTP 和 AJP :HTTP默认端口为8080,处理http请求,而AJP默认端口8009,用于处理 AJP 协议请求,而AJP比http更加优化,多用于反向集群等,漏洞由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数读取服务器webapp下的任意文件。Tomcat 服务器一个开源轻量级Web应用服务器,在中小型系统并发量小的场合下被普遍使用,是开发调试Servlet、JSP 程序的首选。

1.目录

2.Tomcat:简介

一、概念

    Tomcat 服务器一个开源轻量级Web应用服务器,在中小型系统并发量小的场合下被普遍使用,是开发调试Servlet、JSP 程序的首选。

二、原理
    Tomcat结构图

 

Tomcat主要组件服务器Server,服务Service连接器Connector、容器Container。其中连接器Connector和容器Container是Tomcat核心

    一个Container容器一个多个Connector组合在一起,加上其他一些支持组件共同组成一个Service服务,有了Service服务便可以对外提供能力了,但是Service服务的生存需要一个环境这个环境便是Server,Server组件为Service服务的正常使用提供了生存环境,Server组件可以同时管理一个多个Service服务

3.Tomcat8弱密码&&后端Getshell漏洞

漏洞概述

Tomcat支持通过后端部署war文件,所以我们可以直接webshell放到web目录下。
访问后台需要对应用户有相应权限

经理后台管理
managerguihtml页面权限
managerstatus查看状态权限
managerscript文本界面权限状态权限)
managerjmxjmx 权限和状态权限)
主机管理器虚拟主机管理
adminguihtml 页面权限)
adminscript文本界面权限)

漏洞利用
用户权限在conf/tomcatusers.xml文件配置

可以看出,用户tomcat拥有上述所有权限,密码tomcat

Tomcat8正常安装默认没有用户管理器页面只允许本地IP访问。只有管理员手动修改了这些属性我们才能进行攻击

漏洞复现

 

环境搭建使用vulhub/tomcat/tomcat8

 

口令用户

可以看到管理后台界面中有一个文件上传接口,但是只允许上传war
接下来将冰蝎提供的shell.jsp压缩zip文件然后更改后缀名为.war进行上传

 4.CVE-2017-12615任意文件写入

漏洞概述

2017年9月19日,Apache Tomcat官方确认修复两个高危漏洞,其中就有远程代码执行漏洞(CVE-2017-12615)。当存在漏洞的Tomcat 运行在 Windows 主机上,且启用了HTTP PUT请求方法例如,将 readonly 初始化参数默认值设置false),攻击者将有可能通过精心构造攻击请求数据包服务器上传包含任意代码的 JSP 的webshell文件,JSP文件中的恶意代码将能被服务器执行,导致服务器上的数据泄露获取服务器权限。

漏洞利用

conf/web.xml发现默认配置readonly参数true默认值),即不允许DELETE和PUT操作。一般开发过程都会开启配置,如果禁用PUT方法,对于依赖PUT方法的应用可能导致业务失效

漏洞复现
环境搭建使用vulhub/tomcat/CVE-2017-12615

通过Burp Suite改包,将请求方法改成PUT,添加文件名txt1.txt ,可以看到成功上文件。

 

通过Burp Suite改包,将请求方法改成PUT,添加文件名shell.jsp/(注意后面要添加/或者%20或者::$DATA,主要就是绕过文件上传限制),请求体中添加jsp的冰蝎马。

 

 5.CVE-2020-1938任意文件 读取漏洞复现及浅析

漏洞概述

由于Tomcat AJP 协议设计存在缺陷,攻击者通过Tomcat AJP Connector可以读取包含 Tomcat上所有 webapp目录下的任意文件,例如可以读取webapp 配置文件源代码

漏洞浅析
Tomcat内部处理请求流程

 

1. 用户点击网页内容请求发送本机端口8080,被Connector获得(Connector中的Processor用于封装Request,Adapter用于将封装好的Request交给Container)。

2. Connector把该请求交给Container中的Engine来处理,并等待Engine的回应。

3. Engine获得请求localhost/test/index.jsp匹配所有的虚拟主机Host。

4. Engine匹配名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有的Context。Host匹配路径为/test的Context(如果匹配不到就把该请求交路径名为” “的Context去处理)。

5. path=”/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL PATTERN为*.jsp的Servlet对应于JspServlet类(匹配不到指定Servlet的请求对应DefaultServlet类)。

6. Wrapper是最底层容器负责管理一个Servlet。构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost(),执行业逻辑数据存储程序

7. Context执行完之后的HttpServletResponse对象返回给Host

8. Host把HttpServletResponse对象返回给Engine。

9. Engine把HttpServletResponse对象返回Connector。

10. Connector把HttpServletResponse对象返回客户Browser。

漏洞利用:

Tomcat 配置两个Connecto,它们分别是 HTTP 和 AJP :HTTP默认端口为8080,处理http请求,而AJP默认端口8009,用于处理 AJP 协议的请求,而AJP比http更加优化,多用于反向集群等,漏洞由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。

漏洞复现
环境搭建:使用vulhub/tomcat/CVE-2020-1938

打开kali利用网上exp执行命令

python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.159.128 -p 8009 –f WEB-INF/web.xml

 

对比查看靶机webapps下ROOT内WEB-INF/web.xml文件,一致

 

原文地址:https://blog.csdn.net/qq_56150805/article/details/130521561

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_42398.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注