91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

發布時間:2021-12-14 10:18:22 來源:億速云 閱讀:272 作者:柒染 欄目:安全技術

本篇文章為大家展示了怎么實現Fastjson小于1.2.68版本反序列化漏洞分析,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

前言

遲到的Fastjson反序列化漏洞分析,按照國際慣例這次依舊沒有放poc。道理還是那個道理,但利用方式多種多樣。除了之前放出來用于文件讀寫的利用方式以外其實還可以用于SSRF。

一、漏洞概述

在之前其他大佬文章中,我們可以看到的利用方式為通過清空指定文件向指定文件寫入指定內容(用到第三方庫)。當gadget是繼承的第一個類的子類的時候,滿足攻擊fastjson的條件。此時尋找到的需要gadget滿足能利用期望類繞過checkAutoType。

下面分析了一種利用反序列化指向fastjson自帶類進行攻擊利用,可實現文件讀取、SSRF攻擊等。

二、調試分析

1. 漏洞調試

從更新的補丁中可以看到expectClass類新增了三個方法分別為:

java.lang.Runnable、java.lang.Readable、java.lang.AutoCloseable

首先,parseObject方法對傳入的數據進行處理。通過詞法解析得到類型名稱,如果不是數字則開始checkAutoType檢查。

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

當傳入的數據不是數字的時候,默認設置期望類為空,進入checkAutoType進行檢查傳入的類。

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

判斷期望類,此時期望類為null。往下走的代碼中,autoCloseable 滿足不在白名單內,不在黑名單內,autoTypeSupport沒有開啟,expectClassFlag為false。

其中:

A.計算哈希值進行內部白名單校驗

B.計算哈希值進行黑名單校驗

C.非內部白名單且開啟autoTypeSupport或者是期望類的,進行hash校驗白名單acceptHashCodes、黑名單denyHashCodes。如果在acceptHashCodes內則進行加載( defaultClassLoader),在黑名單內則拋出 autoType is not support。

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析滿足條件C后來到clazz的賦值,解析來的代碼中對clazz進行了各種判斷。

從明文緩存中取出autoCloseable賦值給 clazz。

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析怎么實現Fastjson小于1.2.68版本反序列化漏洞分析當clazz不為空時,expectClassFlag為空不滿足條件,返回clazz,至此,第一次的checkAutoType檢查完畢。

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

將檢查完畢的autoCloseable進行反序列化,該類使用的是JavaBeanDeserializer反序列化器,從MapDeserializer中繼承。

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

JSON.DEFAULT_TYPE_KEY 為@type ,并給它賦值傳入的key @type ,將第二個類也就是這次 的gadget傳入。

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

期望類在這里發生了變化,expectClass的值變為java.lang.AutoCloseable,typeName為gadget,

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

來到JSONType注解,取typename gadget轉換變為路徑,resource通過將 “.” 替換為”/“得到路徑 。其實已經開始讀取gadget了,它本意應該是加載AutoCloseable。

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

可以看到這里有讀取文件的功能。

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

isAssignableFrom()這個方法用于判斷里面的類是否為繼承類,當利用了java.lang.AutoCloseable這個方法去攻擊fastjson,那么后續反序列化的鏈路一定是要繼承于該類的子類。

TypeUtils.addMapping(typeName, clazz)這一步成功把gadget加入緩存中并返回被賦值gadget的clazz.

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析checkAutoType正式檢查完畢,此時用deserializer = parser.getConfig().getDeserializer(userType); userType既gadget進行反序列化。

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

進入coreConnect()

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

怎么實現Fastjson小于1.2.68版本反序列化漏洞分析

在這里進行連接。找到合適并且可利用的常用jar包中的gadget。gadget在被反序列化后即可執行類里的惡意的功能(不僅限于RCE還包括任意文件讀取/創建,SSRF等)。也可以使本漏洞得到最大化的利用。

至此漏洞利用完結。

上述內容就是怎么實現Fastjson小于1.2.68版本反序列化漏洞分析,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

项城市| 阿拉善左旗| 南部县| 清流县| 寿宁县| 门源| 手游| 介休市| 荃湾区| 镇坪县| 德格县| 台前县| 林州市| 九台市| 万州区| 鄂州市| 沿河| 武穴市| 云南省| 兰西县| 凤凰县| 新和县| 周宁县| 鹤峰县| 遵义市| 柞水县| 鄯善县| 吉隆县| 屏东市| 昌吉市| 临湘市| 尉犁县| 舟曲县| 云阳县| 花莲市| 竹山县| 庐江县| 临城县| 遵义市| 台安县| 紫金县|