Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)

本文详细介绍了Fastjson 1.2.24版本的一个高危远程代码执行漏洞,该漏洞允许攻击者通过@type字段注入恶意代码。影响版本为Fastjson < 1.2.25。分析了漏洞利用条件、复现过程、漏洞修复方案,并深入探讨了漏洞的技术背景、详细分析和补丁机制。
摘要由CSDN通过智能技术生成

1.漏洞信息

1.1 漏洞简介

· 漏洞名称:Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)

· 漏洞编号:无

· 漏洞类型:远程代码执行

· CVSS评分:无

· 漏洞危害等级:高危

1.2 组件概述

Fastjson是一个Java语言编写的高性能功能完善的JSON库。它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON库。Fastjson接口简单易用,已经被广泛使用在缓存序列化、协议交互、Web输出、

Android客户端等多种应用场景。下图是Fastjson组件中的反序列化流程。Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)

1.3 漏洞概述

漏洞是利用fastjson autotype在处理json对象的时候,未对@type字段进行完全的安全性验证,攻击者可以传入危险类,奇热服务器接收到危险类执行其中恶意代码。攻击者通过这种方式可以实现远程代码执行漏洞的利用,获取服务器的敏感信息泄露,甚至可以利用此漏洞进一步对服务器数据进行修改,增加,删除等操作,对服务器造成巨大的影响。

1.4 漏洞利用条件

· 

1.5 漏洞影响

影响版本:
Fastjson < 1.2.25

1.6 漏洞修复

获取Fastjson最新版本,下载链接:https://github.com/alibaba/fastjson

2.漏洞复现

2.1 环境拓扑

Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)

2.2 应用协议

8080/HTTP

2.3 复现过程

基于Windows平台,使用环境目录下的fastjsondemo环境,拷贝后使用Idea打开fastjsondemo文件夹,下载maven资源,运行DemoApplication类即可启动环境。效果如图。


Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)

运行sniper工具箱,填写表单信息,点击Attack,效果如图。

Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)

3.漏洞分析

3.1 技术背景

JavaBean:

JavaBean 是特殊的 Java 类,使用 Java 语言书写,并且遵守 JavaBean API 规范。JavaBean的特征

· 提供一个默认的无参构造函数。

· 需要被序列化并且实现了 Serializable 接口。

· 可能有一系列可读写属性。

· 可能有一系列的 getter 或 setter 方法

方法 描述
getPropertyName() 举例来说,如果属性的名称为 myName,那么这个方法的名字就要写成 getMyName() 来读取这个属性。这个方法也称为访问器。
setPropertyName() 举例来说,如果属性的名称为 myName,那么这个方法的名字就要写成 setMyName()来写入这个属性。这个方法也称为写入器。

程序实例

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

public class StudentsBean implements java.io.Serializable

{

   private String firstName = null;

   private String lastName = null;

   private int age = 0;

 

   public StudentsBean() {

   }

   public String getFirstName(){

      return firstName;

   }

   public String getLastName(){

      return lastName;

   }

   public int getAge(){

      return age;

   }

 

   public void setFirstName(String firstName){

      this.firstName = firstName;

   }

   public void setLastName(String lastName){

      this.lastName = lastName;

   }

   public void setAge(int age) {

      this.age = age;

   }

}

3.2 详细分析

3.2.1 代码分析

Fastjson通过parseObject方法解析传入的json数据。

Fastjson 1.2.24远程代码执行漏洞(com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl)

调用DefaultJSONParser缺省方法对json格式数据进行解析

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值