• FastJson远程命令执行漏洞学习笔记


    🚀 优质资源分享 🚀

    学习路线指引(点击解锁) 知识定位 人群定位
    🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
    💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

    FastJson远程命令执行漏洞学习笔记

    Fastjson简介

    fastjson用于将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。fastjson.jar是阿里开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean对象与json字符串的转换,实现json对象与json字符串的转换。

    fastjson是java的一个库,可以将java对象转化为json格式的字符串,也可以将json格式的字符串转化为java对象,提供了 toJSONString() 和 parseObject() 方法来将 Java 对象与 JSON 相互转换。调用toJSONString方 法即可将对象转换成 JSON 字符串,parseObject 方法则反过来将 JSON 字符串转换成对象。

     //将字符串转化为对象 JSONObject obj=JSON.parseObject(jsonStr);
    
    • 1

    JavaBean:

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

    • 提供一个默认的无参构造函数。
    • 需要被序列化并且实现了 Serializable 接口。
    • 可能有一系列可读写属性。
    • 可能有一系列的 getter 或 setter 方法。

    Fastjson远程命令执行漏洞原理

    Fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并用该类的set/get方法来访问属性。

    其在反序列化的时候,会进入parseField方法,进入该方法后,就会调用setValue(object,value)方法,会将获取到的数组对象,赋予到@type class中的对应属性中。(在后面构造poc的时候详细说)在这里,就可能执行构造的恶意代码。从而造成代码执行。

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

    环境准备

    1、安装docker

     sudo apt update sudo apt install -y docker.io dockesystemclt enable docker 
    • 相关阅读:
      优化华为云服务器采用Key登陆
      LeetCode-剑指68-I.二叉搜索树的最近公共祖先
      35. 干货系列从零用Rust编写负载均衡及代理,代理服务器的源码升级改造
      计算机毕业设计Java大连环保公益网源码+系统+数据库+lw文档
      egg(二十):fs读取本地的txt文件
      React - 01
      创建git分支命名原则
      四轴飞控DIY Mark4 - 减震
      电子电路当中 “地” 的认识
      JS Array 操作方法合集
    • 原文地址:https://blog.csdn.net/u013190417/article/details/126684860