作者:Lucifaer
博客:https://www.lucifaer.com
本文接上文,這裡不會分析原文章中所說的/env
這種利用的方法,而是說一下rr大佬的發現的另外一條利用鏈。
0x01 檢查MBean
如果說不存在ch.qos.logback.classic reloadByURL
這個MBean,還能不能造成RCE呢,這個是我在看完文章后的一個想法。如果說想要解決這個問題,我們需要再看看/jolokia/list
中還有哪些利用鏈可用(真的是太多了T T,由於當時看完記得是在Spring Boot中內嵌的Tomcat中,所以直接看的這個類,然而這個類差點也看跪了T T)。
最終找到org.apache.catalina.mbeans.MBeanFactory
這個可能能造成JNDI注入的類,其中有以下這麼幾個方法從註釋的描述中感覺是可以造成JNDI注入的:
- createUserDatabaseRealm
- createDataSourceRealm
- createJNDIRealm
這幾點中只有最後的createJNDIRealm
是可用的,但是他們前面的處理流程都是一樣的,接下來就將他們前面的處理流程簡單的分析一下,並說明為什麼只有createJNDIRealm
是可用的。
0x02 Realm創建流程分析
Realm是一個MVCC數據庫,而MVCC是用於解決多版本併發問題的一個方法。有關Realm的一些具體介紹可以參考這篇文章。而我自己的理解是就是它給每一個連接的線程建立了一個“快照”,當兩個請求同時到達一個線程時,程序不會造成阻塞,而是會在這個“快照”(也是一個線程)中進行操作,當執行完成後,阻塞合併更改(有點像git):
转载请注明:IAMCOOL » Attack Spring Boot Actuator via jolokia Part 2