解决AJP漏洞操作记录

article/2025/8/30 4:05:41

前言

最近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 and allowedRequestAttributesPattern attributes.

API中提到的这四个属性比较重要
address , secret , secretRequired and allowedRequestAttributesPattern

操作记录

1. 部署Tomcat

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

<Connector protocol="AJP/1.3" address="::1" port="8009" redirectPort="8443" />

启动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)
... 12 more`

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

2. 运行检测工具

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

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

QQ图片20200225213015.png

以Windows系统为例,使用命令行运行 xray_windows_amd64.exe
此时我的AJP配置如下:

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

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

运行结果:
QQ截图20200225214309.png

如果出现[EEOR]则说明命令不正确。
此处为错误截图:
error.png

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

3. 完善配置

长亭科技 推荐配置
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" address="YOUR\_TOMCAT\_IP\_ADDRESS" secret="YOUR\_TOMCAT\_AJP\_SECRET" />

如果我们配置了 secret 属性,使用 Apache 代理访问服务就会出现403的情况,这个时候我们就需要在 Apacheworkers.properties 文件中配置 secret 值 。
例如 worker.xxx.secret = secret_value ,注意两边的值需要保持一致。
配置完后重启 Apache 服务即可正常访问。

再使用检测工具检测

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

结尾:

如果通过 startup.bat 启动Tomcat出现乱码情况,只需要设置 conf 目录下 logging.properties 文件 java.util.logging.ConsoleHandler.encoding = UTF-8GBK 编码即可。
以上就是笔者升级Tomcat 9.0.31所遇到的问题,特记录于此希望对大家有所帮助。
转载链接:https://segmentfault.com/a/1190000021838764?utm_source=tag-newest


http://chatgpt.dhexx.cn/article/Lxao0NGo.shtml

相关文章

tomcat中ajp及8009端口用处

tomcat常用于提供servlet/jsp容器服务&#xff0c;简单方便、使用高效。但是tomcat处理静态文件资源的性能不足&#xff08;应该是serviece部分&#xff09;&#xff0c;同时&#xff0c;如果用户直接与tomcat进行http的连接获取静态资源&#xff08;连接器connector部分&#…

CVE-2020-1938 :Apache Tomcat AJP 漏洞复现和分析

一、漏洞描述 Apache Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器.默认情况下,Apache Tomcat会开启AJP连接器,方便与其他Web服务器通过AJP协议进行交互.但Apache Tomcat在AJP协议的实现上存在漏洞,导致攻击者可以通过发送恶意的AJP请求,可以读取或者包含Web应…

网络抓包方式复现Tomcat- AJP协议文件读取/命令执行漏洞(CVE-2020-1938 / CNVD-2020-10487)

目录 测试是否安装成功​编辑 基础简介 Tomcat Connector(连接器) ​编辑Servlet(服务程序) Tomcat内部处理请求流程 文件读取漏洞 抓包复现 需要将下图中抓取到的数据包修改一下 ​编辑 替换成二进制数据的形式&#xff1a; 运行结果 ​编辑 创建脚本文件&#xf…

AJP协议

由于tomcat的html和图片解析功能相对其他服务器如apche等较弱&#xff0c;所以&#xff0c;一般都是集成起来使用&#xff0c;只有jsp和servlet服务交由tomcat处理&#xff0c;而tomcat和其他服务器的集成&#xff0c;就是通过ajp协议来完成的。AJP协议AJP13是定向包协议。因为…

Apache Tomcat AJP协议文件读取与包含

永远也不要忘记能够笑的坚强&#xff0c;就算受伤&#xff0c;我也从不彷徨。 0x01.漏洞情况分析 Tomcat是Apache软件基金会Jakarta 项目中的一个核心项目&#xff0c;作为目前比较流行的Web应用服务器&#xff0c;深受Java爱好者的喜爱&#xff0c;并得到了部分软件开发商的…

Tomcat AJP 文件包含漏洞(CVE-2020-1938)

目录 1&#xff0e;漏洞简介 2、AJP13 协议介绍 Tomcat 主要有两大功能&#xff1a; 3&#xff0e;Tomcat 远程文件包含漏洞分析 4&#xff0e;漏洞复现 5、漏洞分析 6&#xff0e;RCE 实现的原理 1&#xff0e;漏洞简介 2020 年 2 月 20 日&#xff0c;公开CNVD 的漏洞公…

Tomcat HTTP协议与AJP协议

https://blog.csdn.net/jeikerxiao/article/details/82745516 Tomcat HTTP协议与AJP协议 HTTP Connector AJP Connector 配置 Tomcat在server.xml中配置了两种连接器。 HTTP Connector 拥有这个连接器&#xff0c;Tomcat才能成为一个web服务器&#xff0c;但还额外可处理Serv…

Tomcat架构解析之AJP

一、前言 除了HTTP&#xff0c;Tomcat还支持AJP协议&#xff0c;以便于Apache HTTP Server等Web服务器集成&#xff0c;这篇博客主要讲解AJP协议的基础知识以及其配置使用方式。 二、基础知识 为了满足负载均衡、静态资源优化、遗留系统集成&#xff08;如集成PHP Web应用&…

HTTP协议与AJP协议

AJP 全称 Apache JServ Protocol&#xff0c; 是定向包协议&#xff0c;因为性能的原因&#xff0c;使用二进制格式来传输可读性文本&#xff0c;WEB服务器通过TCP连接和SERVLET容器连接。 一旦WEB服务器打开了一个到SERVLET容器的连接&#xff0c;连接处于下面的状态&#xff…

解决Destroying ProtocolHandler [“ajp-apr-8009“]

今天刚开始调JSP网站还好好的&#xff0c;后来中间注销了电脑一次&#xff0c; 再打开调试它&#xff0c;就遇到了这个 无法启动服务器的问题&#xff1a; Destroying ProtocolHandler ["ajp-apr-8009"] 上网百度了下&#xff0c;说是端口号被占用了。 解决办法&…

你知道HTTP协议,但你了解AJP协议吗?

什么是AJP协议&#xff1f; AJP 协议用于web服务器和应用服务器之间的通信&#xff1f;为什么不用HTTP呢&#xff1f; Web服务器和应用服务器有什么区别&#xff1f; AJP协议和HTTP 协议有什么区别&#xff1f; 为什么客户端与服务器之间的通信使用HTTP协议而不是用AJP协议&…

WEB安全:Tomcat-Ajp协议漏洞分析

一、漏洞描述 Apache与Tomcat都是Apache开源组织开发的用于处理HTTP服务的项目,两者都是免费的,都可以做为独立的Web服务器运行。 Apache Tomcat服务器存在文件包含漏洞,攻击者可利用该漏洞读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件或源代码…

ajp 定向包协议 二进制代替文本提高性能 简介

AJP协议是定向包&#xff08;面向包&#xff09;协议&#xff0c;采用二进制形式代替文本形式&#xff0c;以提高性能。Web Server一般维持和Web Container的多个TCP Connecions&#xff0c;即TCP连接池&#xff0c;多个request/respons循环重用同一个Connection。但是当Connec…

Java高级自我介绍

先放个大招&#xff0c;哈哈&#xff0c;相信很多朋友准备了很久技术方面的内功&#xff0c;但是在真正与HR交锋的时候&#xff0c;有时还是败下阵来&#xff0c;究其原因之一&#xff0c;竟然是第一招错了&#xff0c;我自己也是&#xff0c;&#xff0c;所以&#xff0c;周末…

java开发自我介绍范文(合集)

java开发自我介绍范文3篇 java开发自我介绍范文篇一&#xff1a; Good morning ! It is really my honor to have this opportunity for a interview, I hope i can make a good performance today. Im confident that I cansucceed. Now i will introduce myself briefly I am…

Java面试中如何介绍自己的项目经验?

&#x1f447;&#x1f447;关注后回复 “进群” &#xff0c;拉你进程序员交流群&#x1f447;&#x1f447; 作者: hsm_computer 来源: https://www.cnblogs.com/JavaArchitect/p/7586949.html 在面试时&#xff0c;经过寒暄后&#xff0c;一般面试官会让介绍项目经验 。常见…

Java程序员面试时,如何进行自我介绍呢?

现在不管什么面试都会面对的一个环节&#xff0c;就是“自我介绍”。这个环节是很多企业作为选拔人才的一个方式与标准。那么&#xff0c;Java程序员面试自我介绍部分讲什么内容&#xff1f;小千给你详细解答下。 Java程序员自我介绍要有一条清晰的线索&#xff0c;便于组织自…

Java面试自我介绍怎么说?Java面试技巧!

自我介绍可谓是面试中最讨厌的环节了&#xff0c;许多程序员自身技术水平相当不错&#xff0c;但不善于表达&#xff0c;在自我介绍环节往往容易给面试官一个不好的印象。但这又是不可避免的&#xff0c;想要别人知道你是谁&#xff0c;你会什么&#xff0c;你做过什么&#xf…

JAVA面试技巧之自我介绍

【如何进行自我介绍】 自我介绍这个问题&#xff0c;不用多说了&#xff0c;面试必定会问&#xff01;如果想要在自我介绍的时候就能够打动面试官&#xff0c;吸引面试官对我们的兴趣&#xff0c;那么像我们这种接受过Java培训的程序员的自我介绍当然不能和应届生或者其他非技术…

AIOP简介

AIOP&#xff1a;AI for IT Operations