CVE-2020-13935-Apache Tomcat 安全漏洞
漏洞描述
Apache Tomcat是美国阿帕奇(Apache)基金会的一款轻量级Web应用服务器。该程序实现了对Servlet和JavaServer Page(JSP)的支持。 Apache Tomcat中的WebSocket存在安全漏洞,该漏洞源于程序没有正确验证payload的长度。攻击者可利用该漏洞造成拒绝服务(无限循环)。
漏洞受影响版本:
Apache Tomcat 10.0.0-M1 - 10.0.0-M6
Apache Tomcat 9.0.0.M1 - 9.0.36
Apache Tomcat 8.5.0 - 8.5.56
Apache Tomcat 7.0.27 - 7.0.104
复现
打开浏览器,地址栏输入http://IPaddress:8080/examples/websocket/echo.xhtml 查看是否可达,如果不可达,则说明该文件被删除,不存在漏洞
环境搭建同 https://sunenovy.blog.csdn.net/article/details/129255029
查看服务器 CPU 占用率 显示为 3.1 us
使用 poc 进行攻击测试
https://github.com/RedTeamPentesting/CVE-2020-13935
go env -w GOPROXY=https://goproxy.cn
go build
执行后产生执行文件 执行文件后 对目标服务器进行攻击
执行后目标服务器查看 CPU 使用率 为 100 us 成功进行拒绝服务攻击
修复
升级补丁
https://github.com/apache/tomcat/commit/40fa74c74822711ab878079d0a69f7357926723d
在 org/apache/tomcat/websocket/WsFrameBase.java 中的 processRemainingHeader 函数中,当 payloadLength 为 127 时,获取新的 payloadLength,增加非负的判断
升级到 Apache Tomcat 10.0.0-M7 或更高版本
升级到 Apache Tomcat 9.0.37 或更高版本
升级到 Apache Tomcat 8.5.57 或更高版本