Apache Tomcat AJP协议文件读取与包含漏洞
Apache Tomcat作为广泛使用的开源Java Web应用服务器,其AJP(Apache JServ Protocol)协议在反向代理场景中扮演着重要角色,AJP协议的设计缺陷曾导致严重的文件读取与包含漏洞(CVE-2020-1938、CVE-2020-35489等),攻击者可利用该漏洞读取服务器敏感文件甚至执行任意代码,本文将从漏洞原理、影响范围、复现方式及防御措施等方面展开分析。
AJP协议与漏洞背景
AJP协议是Tomcat与Web服务器(如Apache HTTP Server、Nginx)之间的高性能通信协议,基于二进制格式设计,支持长连接和请求复用,常用于负载均衡和静态资源分离场景,协议通过实现,允许Web服务器将HTTP请求转发至Tomcat处理。
漏洞的核心问题在于AJP协议对请求参数的校验不足,当Tomcat开启了AJP连接器(默认端口8009)且未正确配置属性时,攻击者可通过构造特殊的AJP请求,绕过Tomcat的访问控制,读取Web应用目录外的敏感文件(如配置文件、系统配置等),或在特定条件下实现远程代码执行。
漏洞原理与利用方式
文件读取漏洞(CVE-2020-1938)
远程代码执行漏洞(CVE-2020-35489)
漏洞影响范围
| 影响范围 | 具体场景 |
|---|---|
| 敏感信息泄露 |
读取
WEB-INF/web.xml
(数据库配置)、
/etc/passwd
(系统用户)、目录等。
|
| 服务器权限获取 | 结合漏洞读取配置文件,进一步获取系统权限或横向移动。 |
| 业务中断 | 攻击者可篡改页面或植入恶意代码,导致服务不可用或用户数据泄露。 |
漏洞复现步骤(以文件读取为例)
防御与修复措施
官方补丁升级
配置加固
网络与访问控制
安全审计与监控
Apache Tomcat AJP协议漏洞的本质是协议层面对路径遍历和文件包含的校验缺失,随着Tomcat官方版本的迭代,高危漏洞已逐步修复,但未升级或配置不当的系统仍面临风险,建议用户及时更新版本,严格限制AJP协议的访问范围,并结合网络层防护措施,构建多层次安全体系,对于企业级应用,还需定期开展渗透测试和代码审计,从源头避免类似漏洞的引入。














发表评论