CVE-2020-1938与CVE-2020-13935漏洞复现

前言

最近在腾讯云上买了个服务器,准备用来学习。在安装了7.0.76的tomcat后,腾讯云提醒我存在两个漏洞,分别是CVE-2020-1938和CVE-2020-13935,在修复完漏洞后,准备复现一下这两个漏洞,于是就有了这篇随笔。

CVE-2020-1938

漏洞简介

2020年,长亭科技安全研究人员全球首次发现了一个存在于流行服务器 Tomcat 中的文件读取/包含漏洞,并第一时间提交厂商修复。

2月14日,Apache Tomcat 官方发布安全更新版本,修复漏洞。2月20日,国家信息安全漏洞共享平台(CNVD)发布安全公告,该漏洞综合评级为高危,漏洞编号为CNVD-2020-10487,CVE 编号 CVE-2020-1938。

cve-2020-1938是一个出现在Apache-Tomcat-Ajp的文件包含漏洞,攻击者可以利用该漏洞读取包含Tomcat上所有的webapp目录下的任意文件,如:webapp配置文件或源代码。由于Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而读取受影响Tomcat服务器上的Web目录文件。同时,若该服务器存在文件上传功能,攻击者还可以进一步实现远程代码执行。

 

影响版本

Apache Tomcat 6

Apache Tomcat 7 < 7.0.100

Apache Tomcat 8 < 8.5.51

Apache Tomcat 9 < 9.0.31

 

环境搭建

在这里推荐一款一键搭建漏洞的工具——Vulhub,非常好用。

我们进入到tomcat的CVE-2020-1938的目录下使用docker-compose up -d启动环境

 

 在主机访问搭建成功

 

漏洞复现

 然后进入kali进行攻击,使用POC

sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read: Tomcat的文件包含及文件读取漏洞利用POC (github.com)

 

 

 被打马赛克的地方是ip地址,最后成功读取到web.xml,攻击成功。

 我们在ROOT目录下写入一个1.txt再测试一下

 

 

 

 

 也能成功读取

但在webapps目录下写入一个2.txt却不能读取,因为它默认读取的是ROOT目录下的文件

 

 

 

CVE-2020-13935

漏洞简介

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查看是否可以访问,如果不可以访问,则说明该文件被删掉了,那就无法进行漏洞利用。

在服务器上使用top -bn 1 -i -c命令,可以看到CPU占有率为0.0

 

 在kali上使用EXP攻击

RedTeamPentesting/CVE-2020-13935: Exploit for WebSocket Vulnerability in Apache Tomcat (github.com)

 

使用此EXP前需要先编译再攻击

go env -w GOPROXY=https://goproxy.cn //修改proxy地址

go build //编译go程序,输出tcdos.exe

 

 

 

 可以看到此时cpu占有率为100,攻击成功

 

参考

CVE-2020-1938 Tomcat 文件读取/包含漏洞复现 - 云+社区 - 腾讯云 (tencent.com)

CVE-2020-13935 漏洞复现 - XY_181312 - 博客园 (cnblogs.com)

posted @ 2021-11-10 14:37  ling-lz  阅读(5636)  评论(0编辑  收藏  举报
Live2D