CVE-2020-1938任意文件读取漏洞复现

CVE-2020-1938漏洞介绍

  1. Java是目前Web开发中最主流的编程语言,而 Tomcat 是当前最流行的 Java 中间件服务器之一,从初版发布到现在已经有二十多年历史,在世界范围内广泛使用。

  2. CVE-2020-1938是由长亭科技安全研究员发现的存在于 Tomcat 中的安全漏洞,由于 Tomcat AJP 协议设计上存在缺陷,攻击者通过 Tomcat AJP Connector 可以读取或包含 Tomcat 上所有 webapp 目录下的任意文件,例如可以读取 webapp 配置文件或源代码。此外在目标应用有文件上传功能的情况下,配合文件包含的利用还可以达到远程代码执行的危害。

  3. 这个漏洞影响全版本默认配置下的 Tomcat(在我们发现此漏洞的时候,确认其影响 Tomcat 9/8/7/6 全版本,而年代过于久远的更早的版本未进行验证),这意味着它在 Tomcat 里已经潜伏了长达十多年的时间。

  4. 影响版本

    • 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

漏洞复现

进入编码为CVE-2020-1938的Apache Tomcat文件包含漏洞,如图所示。

CVE-2020-1938任意文件读取漏洞复现_第1张图片

拉取当前目录下的漏洞镜像,如图所示,需要一定的时间等待。

CVE-2020-1938任意文件读取漏洞复现_第2张图片

启动拉取到的镜像,命令是docker-compose up -d,如图所示。

img

查看环境的使用情况,命令是docker ps,如图所示。

img

登录官网,查看拉取到的镜像的启动方式,如图所示。

CVE-2020-1938任意文件读取漏洞复现_第3张图片

使用nmap工具进行扫描,发现存在8009端口,如图所示,因为ajp协议的端口是8009,所以说明存在ajp协议。

CVE-2020-1938任意文件读取漏洞复现_第4张图片

去GitHub下载POC脚本,如图所示。

CVE-2020-1938任意文件读取漏洞复现_第5张图片

运行所下载的POC脚本,如图所示,发现获取到了web.xml的文件。

CVE-2020-1938任意文件读取漏洞复现_第6张图片

查看靶机里面的web.xml文件,如图所示,发现和使用POC攻击得到的获web.xml的文件一致,说明攻击成功。

CVE-2020-1938任意文件读取漏洞复现_第7张图片

复现成功,关闭环境,使用命令docker-composedown,如图所示,移除成功。

img

修复、防御的方法

  1. 将tomcat升级到9.0.31、8.5.51或者7.0.100版本

  2. 禁止使用AJP协议

  3. 配置secret来设置AJP协议的认证凭证

你可能感兴趣的:(tomcat,java,开发语言)