美文网首页
升级Tomcat 9.0.31解决AJP漏洞操作记录

升级Tomcat 9.0.31解决AJP漏洞操作记录

作者: 60ed3035d0e9 | 来源:发表于2020-02-29 15:41 被阅读0次

    前言

    最近Tomcat爆出AJP漏洞,升级对应版本的Tomcat是比较好的规避方法。本文将记录笔者在升级Tomcat 9.0.31时踩过的一些坑,以便大家能快速升级Tomcat。

    本文只针对Tomcat 9.0.31版本的操作记录。

    Tomcat受影响版本:

    Apache Tomcat 9.x < 9.0.31

    Apache Tomcat 8.x < 8.5.51

    Apache Tomcat 7.x < 7.0.100

    Apache Tomcat 6.x

    如果未使用AJP端口,或者Tomcat版本不在上面的范围内可以不考虑升级。

    准备工具

    Tomcat 9下载地址:https://tomcat.apache.org/dow...

    检测漏洞工具下载链接:https://www.chaitin.cn/zh/gho...

    相关链接

    Tomcat 9 更新日志:https://tomcat.apache.org/tom...

    Tomcat 9.0.31 AJP 相关API:https://tomcat.apache.org/tom...

    Use of the AJP protocol requires additional security considerations because it allows greater direct manipulation of Tomcat's internal data structures than the HTTP connectors. Particular attention should be paid to the values used for the address , secret , secretRequired andallowedRequestAttributesPattern attributes.

    API中提到的这四个属性比较重要

    address , secret , secretRequired and allowedRequestAttributesPattern

    操作记录

    1. 部署Tomcat

    首先解压/安装 Tomcat 9.0.31,直接运行是不会有问题,开启注释的AJP端口后就会启动失败。

    启动Tomcat就会有如下错误:

    严重: Failed to start component [Connector[AJP/1.3-8009]]org.apache.catalina.LifecycleException: 协议处理器启动失败at org.apache.catalina.connector.Connector.startInternal(Connector.java:1038)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)at org.apache.catalina.core.StandardService.startInternal(StandardService.java:438)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)at org.apache.catalina.startup.Catalina.start(Catalina.java:633)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:343)at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:474)Caused by: java.lang.IllegalArgumentException: The AJP Connector is configured with secretRequired="true"but the secret attribute is either null or"". This combination is not valid.at org.apache.coyote.ajp.AbstractAjpProtocol.start(AbstractAjpProtocol.java:264)at org.apache.catalina.connector.Connector.startInternal(Connector.java:1035)...12more

    根据错误提示,需要添加 secretRequired 和 secret 属性,如果 设置 secretRequired="" 则可以不用添加 secret 属性,配置正确之后即可正常启动。

    2. 运行检测工具

    直接运行检测工具可查看相关命令,这里我们根据长亭的官方教程使用 servicescan --target ip:端口命令。

    .\xray_windows_amd64.exe servicescan --target 127.0.0.1:8009

    以Windows系统为例,使用命令行运行 xray_windows_amd64.exe

    此时我的AJP配置如下:

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

    注:address="IP地址 部分情况需要添加 address 属性,否则使用 Apache 代理访问时可能会出现 503,比如电脑存在双网卡等。

    运行结果:

    如果出现[EEOR]则说明命令不正确。

    此处为错误截图:

    下图为存在AJP漏洞的检测结果:

    3. 完善配置

    长亭科技 推荐配置

    如果我们配置了 secret 属性,使用 Apache 代理访问服务就会出现403的情况,这个时候我们就需要在 Apache 的 workers.properties 文件中配置 secret 值 。

    例如 worker.xxx.secret = secret_value ,注意两边的值需要保持一致。

    配置完后重启 Apache 服务即可正常访问。

    再使用检测工具检测

    检测结果如下:

    此时检测结果状态码都是 403 ,同时 Apache 也能正常访问系统。

    结尾:

    如果通过 startup.bat 启动Tomcat出现乱码情况,只需要设置 conf 目录下 logging.properties 文件 java.util.logging.ConsoleHandler.encoding = UTF-8 为 GBK 编码即可。

    以上就是笔者升级Tomcat 9.0.31所遇到的问题,特记录于此希望对大家有所帮助。

    相关文章

      网友评论

          本文标题:升级Tomcat 9.0.31解决AJP漏洞操作记录

          本文链接:https://www.haomeiwen.com/subject/rfjgxqtx.html