近日检测到CNVD发布了CNVD-2020-10487漏洞通告,360灵腾安全实验室判断漏洞等级为严重,利用难度中,威胁程度高,影响面大。建议使用用户及时安装最新补丁,以免遭受黑客攻击。
0x00 漏洞概述
Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持,并提供了作为Web服务器的一些特有功能,如Tomcat管理和控制平台、安全局管理和Tomcat阀等。由于Tomcat本身也内含了HTTP服务器,因此也可以视作单独的Web服务器。
攻击者通过Ajp协议端口利用该漏洞进行文件读取或包含 Tomcat 上所有 webapp 目录下的任意文件,如:webapp 配置文件、源代码等。
0x01 漏洞详情
查看 Github 上 tomcat commit 历史记录可以看到有许多对AJP协议的代码提交
在其中一条commit中,发现了AJP白名单的添加
对代码块进行分析,发现java/org/apache/coyote/ajp/AbstractAjpProcessor.java
中的 prepareRequest()
函数的功能是对 AJP 协议进行解析
通过对该函数的调试,可以发现在处理 Constants.SC_A_REQ_ATTRIBUTE 这部分内容时,代码中未进行内容校验,盲目的将请求的内容进行复制
因此,我们可以修改AJP请求的属性,进行能够控制任意 request.setAttribute
的key和value,通过控制request对象中这三个属性的值实现文件读取
javax.servlet.include.request_uri
javax.servlet.include.path_info
javax.servlet.include.servlet_path
利用效果:
0x02 影响版本
- Tomcat 6.*
- Tomcat 7.* < 7.0.100
- Tomcat 8.* < 8.5.51
- Tomcat 9.* < 9.0.31
0x03 漏洞检测
相关用户可通过版本检测的方法判断当前应用是否存在漏洞风险:
在web管理页面左上方可查看当前所使用的Tomcat版本
若当前版本在受影响范围内,则可能存在安全风险。
0x04 处置建议
1.Apache官方已发布9.0.31、8.5.51及7.0.100版本针对此漏洞进行修复,Apache Tomcat 6 已经停止维护,请升级到最新受支持的 Tomcat 版本以免遭受漏洞影响:
https://tomcat.apache.org/download-70.cgi
https://tomcat.apache.org/download-80.cgi
https://tomcat.apache.org/download-90.cgi
2.使用AJP协议的临时处置方法:为AJP Connector配置secret来设置 AJP 协议的认证凭证,且注意口令强度
3.未使用AJP协议的临时处置方法:禁用AJP协议端口,在conf/server.xml配置文件中注释,并重启Tomcat服务
<Connector port="8009" protocol="AJP/1.3"redirectPort="8443" />
0x05 关于我们
灵腾安全实验室(REDTEAM)正式成立于2020年,隶属于360政企-实网威胁感知部;主攻研究方向包括红队技术、物理攻防、安全狩猎等前瞻技术,为 360AISA全流量威胁分析系统、360天相资产威胁与漏洞管理系统、360虎安服务器安全管理系统、360蜃景攻击欺骗防御系统 核心产品提供安全赋能。
0X06 Reference
https://www.cnvd.org.cn/flaw/show/CNVD-2020-10487?spm=a2c4g.11174464.0.0.48a21051t59uVP