JAVA安全—FastJson反序列化利用鏈跟蹤autoType繞過

前言

FastJson這個漏洞我們之前講過了,今天主要是對它的鏈條進行分析一下,明白鏈條的構造原理。

Java安全—log4j日志&FastJson序列化&JNDI注入_log4j漏洞-CSDN博客

漏洞版本

1.2.24及以下沒有對序列化的類做校驗,導致漏洞產生

1.2.25-1.2.41增加了黑名單限制,更改autoType默認為關閉選項。

1.2.42版本是對1.2.41及以下版本的黑名單繞過,代碼內更新字符串黑名單hash方式

1.2.43版本是對1.2.42及以下版本的黑名單繞過

1.2.44-1.2.45版本1.2.43版本黑名單無法繞過,尋找新的利用鏈進行利用

1.2.47版本 利用fastjson處理Class類時的操作,將惡意類加載到緩存中,實現攻擊

1.2.62-1.2.67版本Class不會再往緩存中加載惡意類,尋找新的利用鏈進行突破

1.2.68版本,使用期望類AutoCloseable來繞過fastjson校驗

1.2.72-1.2.80使用期望類Throwable的子類,進行繞過

項目搭建

JDK不建議選版本太高的,以防止出錯啥的。

選擇Web依賴項,因為后續會用到Web的功能。

新建一個類叫FastJsonController,這里待會寫入我們的實驗代碼。

接著我們引入fastjson這個包,我這里選擇的是1.2.24版本,直接再pom.xml文件寫入以下代碼即可。

首先寫入以下代碼,對我們的JSON數據進行測試,可以看到能夠成功解析輸出,說明環境沒毛病。

public static void main(String[] args) {String str = "{\"name\":\"wlwznb\",\"age\":18}";JSONObject data = JSON.parseObject(str);System.out.println(data);}

鏈條分析

1.2.24 利用鏈分析

現在我們開始對鏈條來解析,把我們上面測試的JSON數據換成以下的鏈條,可以看出來有點像我們的fastjson利用鏈了。

String userStr = "{\"@type\":\"com.sf.maven.fastjsondemo1.demos.web.User\",\"age\":18,\"name\":\"wlwznb\"}";

這個 com.sf.maven.fastjsondemo1.demos.web.User 就是你自帶的 User 類的路徑,直接復制過來就行。

運行代碼,可以看出與上面的沒啥區別。

別急,此時我們打開User這個類,可以看出里面又很多方法。

我們往里面添加打印語句,這樣在調用這些方法的時候,我們就會知道被調用了。

此時我們再運行代碼,可以看到setAge、setName、getAge、getName這四個方法都被調用了,這說明在解析數據的時候不僅僅把age和name這兩個數據解析了,還把User類里面的set和get方法解析了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/894948.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/894948.shtml
英文地址,請注明出處:http://en.pswp.cn/news/894948.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

力扣240 搜索二維矩陣 ll

編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標值 target 。該矩陣具有以下特性: 每行的元素從左到右升序排列。每列的元素從上到下升序排列。 示例 1: 輸入:matrix [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,…

機器學習數學基礎:19.線性相關與線性無關

一、線性相關與線性無關的定義 (一)線性相關 想象我們有一組向量,就好比是一群有著不同“力量”和“方向”的小伙伴。給定的向量組 α ? 1 , α ? 2 , ? , α ? m \vec{\alpha}_1, \vec{\alpha}_2, \cdots, \vec{\alpha}_m α 1?,α 2…

C語言按位取反【~】詳解,含原碼反碼補碼的0基礎講解【原碼反碼補碼嚴格意義上來說屬于計算機組成原理的范疇,不過這也是學好編程初級階段的必修課】

目錄 概述【適合0基礎看的簡要描述】: 上述加粗下劃線的內容提取版: 從上述概述中提取的核心知識點,需背誦: 整數【包含整數,負整數和0】的原碼反碼補碼相互轉換的過程圖示: 過程詳細刨析:…

StarSpider 星蛛 爬蟲 Java框架 可以實現 lazy爬取 實現 HTML 文件的編譯,子標簽緩存等操作

StarSpider 星蛛 爬蟲 Java框架 開源技術欄 StarSpider 能夠實現 針對 HTML XSS SQL 數學表達式等雜亂數據的 爬取 解析 提取 需求! 目錄 文章目錄 StarSpider 星蛛 爬蟲 Java框架目錄介紹如何獲取?maven配置 架構是什么樣的?結果對象的類…

【系統架構設計師】分布式數據庫透明性

目錄 1. 說明2. 分片透明3. 復制透明4. 位置透明5. 邏輯透明(局部數據模型透明)6.例題6.1 例題1 1. 說明 1.在分布式數據庫系統中,分片透明、復制透明、位置透明和邏輯透明是幾個重要的基本概念。2.分片透明、復制透明、位置透明和邏輯透明是…

音頻進階學習十一——離散傅里葉級數DFS

文章目錄 前言一、傅里葉級數1.定義2.周期信號序列3.表達式DFSIDFS參數含義 4.DFS公式解析1)右邊解析 T T T、 f f f、 ω \omega ω的關系求和公式N的釋義求和公式K的釋義 e j ( ? 2 π k n N ) e^{j(\frac{-2\pi kn}{N})} ej(N?2πkn?)的釋義 ∑ n 0 N ? 1 e…

C++ Primer 成員訪問運算符

歡迎閱讀我的 【CPrimer】專欄 專欄簡介:本專欄主要面向C初學者,解釋C的一些基本概念和基礎語言特性,涉及C標準庫的用法,面向對象特性,泛型特性高級用法。通過使用標準庫中定義的抽象設施,使你更加適應高級…

基礎入門-算法解密散列對稱非對稱字典碰撞前后端逆向MD5AESDESRSA

知識點: 0、算法類型-單向散列&對稱性&非對稱性 1、算法識別加解密-MD5&AES&DES&RSA 2、解密條件尋找-邏輯特征&源碼中&JS分析 應用場景: 1、發送數據的時候自動將數據加密發送(只需加密即可) 安全…

Qt修仙之路2-1 煉丹初成

widget.cpp #include "widget.h" #include<QDebug> //實現槽函數 void Widget::login1() {QString userusername_input->text();QString passpassword_input->text();//如果不勾選無法登入if(!check->isChecked()){qDebug()<<"xxx"&…

【R語言】環境空間

一、環境空間的特點 環境空間是一種特殊類型的變量&#xff0c;它可以像其它變量一樣被分配和操作&#xff0c;還可以以參數的形式傳遞給函數。 R語言中環境空間具有如下3個特點&#xff1a; 1、對象名稱唯一性 此特點指的是在不同的環境空間中可以有同名的變量出現&#x…

【redis】緩存設計規范

本文是 Redis 鍵值設計的 14 個核心規范與最佳實踐&#xff0c;按重要程度分層說明&#xff1a; 一、通用數據類型選擇 這里我們先給出常規的選擇路徑圖。 以下是對每個步驟的分析&#xff1a; 是否需要排序&#xff1f;&#xff1a; zset&#xff08;有序集合&#xff09;用…

2021 年 9 月青少年軟編等考 C 語言五級真題解析

目錄 T1. 問題求解思路分析T2. 抓牛思路分析T3. 交易市場思路分析T4. 泳池思路分析T1. 問題求解 給定一個正整數 N N N,求最小的 M M M 滿足比 N N N 大且 M M M 與 N N N 的二進制表示中有相同數目的 1 1 1。 舉個例子,假如給定 N N N 為 78 78 78,二進制表示為 …

Windows 中學習Docker環境準備2、Docker Desktop中安裝ubuntu

Windows 中學習Docker環境準備1、Win11安裝Docker Desktop Windows 中學習Docker環境準備2、Docker Desktop中安裝ubuntu Windows 中學習Docker環境準備3、在Ubuntu中安裝Docker 需要更多Docker學習視頻和資料&#xff0c;請文末聯系 一、安裝 Docker Desktop 下載 Docker…

LabVIEW2025中文版軟件安裝包、工具包、安裝教程下載

下載鏈接&#xff1a;LabVIEW及工具包大全-三易電子工作室http://blog.eeecontrol.com/labview6666 《LabVIEW2025安裝圖文教程》 1、解壓后&#xff0c;雙擊install.exe安裝 2、選中“我接受上述2條許可協議”&#xff0c;點擊下一步 3、點擊下一步&#xff0c;安裝NI Packa…

PHP ODBC:深入探索數據庫連接與交互技術

PHP ODBC:深入探索數據庫連接與交互技術 引言 PHP作為一種廣泛使用的服務器端腳本語言,在Web開發中扮演著重要角色。在數據處理方面,PHP與數據庫的交互是其核心功能之一。ODBC(Open Database Connectivity)作為一種標準數據庫訪問接口,允許PHP應用程序與各種數據庫系統…

AUTOSAR汽車電子嵌入式編程精講300篇-基于FPGA的CAN FD汽車總線數據交互系統設計

目錄 前言 汽車總線以及發展趨勢 汽車總線技術 汽車總線發展趨勢 CAN FD總線國內外研究現狀 2 系統方案及CAN FD協議分析 2.1系統控制方案設計 2.2 CAN FD總線幀結構分析 2.2.1數據幀分析 2.2.2遠程幀分析 2.2.3過載幀分析 2.2.4錯誤幀分析 2.2.5幀間隔分析 2.3位…

BUU17 [RoarCTF 2019]Easy Calc1

自用 源代碼 $(#calc).submit(function(){$.ajax({url:"calc.php?num"encodeURIComponent($("#content").val()),type:GET,success:function(data){$("#result").html(<div class"alert alert-success"><strong>答案:&l…

5. k8s二進制集群之ETCD集群部署

下載etcd安裝包創建etcd配置文件準備證書文件和etcd存儲目錄ETCD證書文件安裝(分別對應指定節點)創建證書服務的配置文件啟動etcd集群驗證etcd集群狀態繼續上一篇文章《k8s二進制集群之ETCD集群證書生成》下面介紹一下etcd證書生成配置。 下載etcd安裝包 https://github.com…

Java并發編程筆記

Java并發基礎知識補全 啟動 啟動線程的方式只有&#xff1a; 1、X extends Thread;&#xff0c;然后X.start 2、X implements Runnable&#xff1b;然后交給Thread運行 線程的狀態 Java中線程的狀態分為6種&#xff1a; 1. 初始(NEW)&#xff1a;新創建了一個線程對象&…

使用多模態大語言模型進行深度學習的圖像、文本和語音數據增強

在過去的五年里&#xff0c;研究方向已從傳統的機器學習&#xff08;ML&#xff09;和深度學習&#xff08;DL&#xff09;方法轉向利用大語言模型&#xff08;LLMs&#xff09;&#xff0c;包括多模態方法&#xff0c;用于數據增強&#xff0c;以提高泛化能力&#xff0c;并在…