Tomcat的AJP漏洞的补救措施

背景

tomcat是较为常用的web服务器,近日公司发布了Tomcat中间件漏洞的整改通知,来进行对tomcat的AJP漏洞的补救,下面讲述对于tomcat的两种补救措施。

漏洞详情

国家信息安全漏洞共享平台于2月22日发布了一份关于Apache  Tomcat存在文件包含漏洞的安全报告。该漏洞综合评级为“高危”,影响的产品版本包括:Tomcat6、Tomcat7、Tomcat8、Tomcat9。报告中提到Tomcat AJP协议由于存在实现缺陷导致相关参数可控,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件,若服务器端同时存在文件上传功能,攻击者可进一步实现远程代码的执行。

官网修复漏洞版本

官网已经发布修复漏洞的Apache Tomcat版本,版本分别为:Tomcat9.0.31、Tomcat8.5.51、Tomcat7.0.100,大家可以通过Apache Tomcat官网下载相应的版本进行更新。

一、springBoot内置tomcat

首先要确定是否开启了AJP,一般springboot是默认不开启AJP协议的。如果使用的是springboot的内置tomcat,且手动开启了AJP协议,则需要升级内置tomcat版本。

springboot开启AJP方法

@Bean
    public WebServerFactory<TomcatServletWebServerFactory> servletWebConnector() {
      return server -> {
        if (server instanceof TomcatServletWebServerFactory) {
            ((TomcatServletWebServerFactory) server).addAdditionalTomcatConnectors(redirectConnector());
        }
      };
    }
 
    private Connector redirectWebConnector() {
       Connector connector = new Connector("AJP/1.3");
       connector.setScheme("http");
       connector.setPort(ajpPort);
       connector.setSecure(false);
       connector.setAllowTrace(false);
       return connector;
    }

springboot如何升级内置tomcat版本

首先要引入依赖包,然后根据依赖包进行升级

 <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <exclusions>
        <exclusion>
          <artifactId>tomcat-embed-core</artifactId>
          <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
        <exclusion>
          <artifactId>tomcat-embed-el</artifactId>
          <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
        <exclusion>
          <artifactId>tomcat-embed-websocket</artifactId>
          <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-core</artifactId>
      <version>9.0.31</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-el</artifactId>
      <version>9.0.31</version>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat.embed</groupId>
      <artifactId>tomcat-embed-websocket</artifactId>
      <version>9.0.31</version>
      <exclusions>
        <exclusion>
          <artifactId>tomcat-embed-core</artifactId>
          <groupId>org.apache.tomcat.embed</groupId>
        </exclusion>
      </exclusions>
    </dependency>

二、通常tomcat

1、如未使用Tomcat AJP协议:

如未使用Tomcat AJP协议,直接下载对应版本修复漏洞

如有更老版本或者无法立即进行版本更新的用户,建议直接关闭AJPConnector,或将其监听地址改为仅监听本机localhost。具体操作如下:

(1)编辑<CATALINA_BASE>/conf/server.xml,找到如下行(<CATALINA_BASE>为Tomcat的工作目录):

        <Connector port=”8009” protocol=”AJP/1.3” redirectPort=”8443/”>

(2)将此行注释(也可删掉改行)

<!--<Connector port=”8009”  protocol=”AJP/1.3” redirectPort=”8443/”>-->

(3)保存后需重新启动,规则方可生效。

2、如果使用了Tomcat AJP协议:

建议将 Tomcat 立即升级到 9.0.31、8.5.51 或 7.0.100 版本进行修复,同时为 AJP Connector 配置 secret 来设置 AJP 协议的认证凭证。例如(注意必须将 YOUR_TOMCAT_AJP_SECRET 更改为一个安全性高、无法被轻易猜解的值):

<Connector port=”8009”protocol=”AJP/1.3”redirectPort=”8443”address=”YOUR_TOMCAT_IP_ADDRESS”secret=”YOUR_TOMCAT_AJP_SECRET”>

另外,如无法立即进行版本更新、或者是更老版本的用户,建议为 AJPConnector 配置 requiredSecret 来设置 AJP 协议认证凭证。例如(注意必须将 YOUR_TOMCAT_AJP_SECRET 更改为一个安全性高、无法被轻易猜解的值):

<Connector port=”8009”  protocol=”AJP/1.3” redirectPort=”8443” address=”YOUR_TOMCAT_IP_ADDRESS” secret=”YOUR_TOMCAT_AJP_SECRET”>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值