tomcat AJP 任意文件读取/包含漏洞(CVE-2020-1938)

漏洞描述

Tomcat AJP协议中存在缺陷,攻击者可以读取或包含Tomcat的webapp目录中的任何文件。
漏洞危害:

  1. 读取 webapp 配置文件或源代码。
  2. 如果攻击者读取配置文件得到敏感用户名和下面,tomcat Web应用开放manager目录具有文件上传功能
    2.1 可以直接上传shell获取控制权,
    2.2 通过Ghostcat漏洞利用文件包含在目标主机上执行恶意代码(被包含的文件直接当做jsp代码执行)

tomcat默认情况下就会开启ajp协议的解析
tomcat开启了两个Connector,分别是http(8080)ajp(8009),AJP的处理比HTTP更加优化,可以在conf/server.xml中看到

至于AJP处理中详细的漏洞原理可以参考:
https://mp.weixin.qq.com/s/D1hiKJpah3NhEBLwtTodsg
https://mp.weixin.qq.com/s/GzqLkwlIQi_i3AVIXn59FQ

漏洞复现

使用vulhub复现该漏洞

cd vulhub/tomcat/CVE-2020-1938
sudo docker-compose up -d


启动成功,这里可以看到是版本为Tomcat/9.0.30

webapps目录内容读取

这里漏洞利用方法需要使用到exp,幸运的是searchsploit发现拥有两个一个是py脚本,一个是metasploit

这里我使用metasploit演示


默认读取的配置文件时web.xml,设置好参数直接尝试漏洞利用

成功运行,并且把读取到的文件内容保存到了/home/kali/.msf4/loot/20240409041816_default_192.168.154.138_WEBINFweb.xml_673554.txt
但是这个文件并没有太大的作用,我们只可以读取webapps目录下的内容,接着我们看下一个文件包含漏洞可以getshell

文件包含漏洞

该漏洞需要一定的条件(靶机存在一个jsp reverse-shell),但是为了模拟,这里我们手动生成一个上传到靶机中
使用msfvenom,这里只要是jsp reverse-shell都可以

在本机监听的meterpreter终端

这里需要换一个文件包含的脚本,地址:https://github.com/sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read/
脚本访问shell.jsp就会反弹一个shell

获得shell

漏洞修复

  1. 更新的最新的版本进行漏洞修复
  2. 临时取消ajp服务,在需要的时候启动,可以在/conf/server.xml中注释ajp配置信息,重启即可关闭
posted @ 2024-04-09 16:51  Junglezt  阅读(249)  评论(0编辑  收藏  举报