当前位置: 首页 > news >正文

fastjson漏洞#不出网#原理#流量特征

原理

本质是java的反序列化漏洞,由于引进了自动检测类型的(autotype)功能,fastjson在对json字符串反序列化的时候,会读取@type内容,会试图将json内容反序列化成这个对象,并调用这个类的setter方法,那么攻击者就可以构造特定的json内容和通过@type来指定自己想要的内部库,从而导致远程命令的执行漏洞

流量特征

  • 采用post方法

  • 发送数据包和返回包的数据类型为json类型

  • 还有就是他的请求报文的花括号没闭合,请求包就会出现fastjson字段

    • image
  • 响应包中有fastjson关键字

  • 对于无回显的fastjson漏洞,其返回包中存在@type和dnslog平台网址

  • 请求体可能含有攻击者c2服务器地址或者ladp协议,rmi协议的地址,还有就是,

  • 返回包状态码一般为400,也可能为500

  • 请求体中可能存在type,bytecodes,java.lang,返回包中含有commit = true

Fastjson不出网的利用与防护

利用

  1. 利用 TemplatesImpl

    • TemplatesImpl 是最常见的利用类,因为它自带 bytecodes 字段,攻击者可以植入恶意字节码。
    • 攻击无需额外依赖,只需要服务器环境支持 JDK。
  2. 利用 BasicDataSource

    • 针对 Tomcat 环境下的应用,攻击者可以利用 org.apache.tomcat.dbcp.dbcp.BasicDataSourceorg.apache.tomcat.dbcp.dbcp2.BasicDataSource 类。

    • 攻击者构造恶意 JSON,指向 BasicDataSource 类,通过某些触发条件实现远程代码执行。

    • 触发条件

      • 需要目标应用运行在Tomcat环境中
      • 必须在 JSON 解析时启用 Feature.SupportNonPublicField 特性。
    • Tomcat 版本要求

      • Tomcat 8.0 之前:org.apache.tomcat.dbcp.dbcp.BasicDataSource
      • Tomcat 8.0 之后:org.apache.tomcat.dbcp.dbcp2.BasicDataSource

防护

使用Fastjson的黑名单功能:Fastjson提供了一个黑名单功能,可以用于禁止某些Java类的序列化和反序列化。通过设置一些敏感类的黑名单,禁止序列化和反序列化这些类,从而避免一些恶意攻击。

对Fastjson进行安全加固:对Fastjson进行安全加固可以避免恶意攻击。可以通过开启自动类型识别检查、限制反序列化对象的深度、限制反序列化对象的大小等措施,提高Fastjson的安全性。

使用其他JSON处理器: 如果对Fastjson存在疑虑或者担心其安全性问题,也可以考虑使用其他JSON处理器,比如Jackson、Gson等。这些处理器同样具有高性能和易用性,并且也可以进行安全加固。

漏洞产生的原因

由于@type字段的可控性,攻击者可以将@type字段设置为特定且服务端可以使用的类,从而执行恶意代码。具体原理如下:

  1. @type字段的利用:在反序列化过程中,Fastjson会根据@type字段的值来确定反序列化后的Java对象的类型。
  2. 恶意类加载:攻击者可以指定一个特定的Java类,该类可以被利用来执行恶意代码。
  3. JNDI注入:利用一些常见的Java类(如com.sun.rowset.JdbcRowSetImpl)来进行JNDI注入攻击,通过访问远程RMI或LDAP服务器来执行恶意代码。

漏洞修复

几种修复和防护措施包括:

  1. 升级Fastjson版本:官方建议升级到最新版本,例如1.2.83版本。
  2. 禁用危险类
  3. 关闭AutoType功能:如果无法升级,可以暂时关闭AutoType功能降低风险。
  4. 配置WAF防护:使用Web应用防火墙(WAF)防护。

相关文章:

  • CD10.【C++ Dev】类和对象(1)
  • 用户仿真任务调度管理平台数据库设计
  • 使用Qt调用HslCommunication(C++调用C#库)
  • 微服务拆分-远程调用
  • 电子学会—2024年12月青少年软件编程(图形化)级等级考试真题——猜年龄互动小游戏
  • Linux之Web控制台管理系统命令终端管理系统(保姆级)
  • 精选一百道题备赛蓝桥杯 —— 1.子串简写
  • 【AI】Deepseek本地部署探索,尝试联网搜索
  • 碰撞率降低57.4%!VLM-AD显著提升自动驾驶规划准确性,无需VLM实时推理
  • 使用 Docker 构建不同 Node 环境下的 Hexo 调试环境
  • 推荐一个好用的在线文本对比网站 - diffchecker
  • 【新手指南】pyqt可视化远程部署deepseek7B蒸馏版模型
  • 测试大语言模型在嵌入式设备部署的可能性-ollama本地部署测试
  • HTTPS加密原理详解
  • 江协科技/江科大-51单片机入门教程——P[4-1] 静态数码管显示 P[4-2] 动态数码管显示
  • Dify 本地部署教程
  • 框架基本知识总结 Day16
  • 二级Python通关秘籍:字符串操作符/函数/方法全解析与实战演练
  • Android笔记:android 6.0 TextView对state_selected失效
  • [Python爬虫系列]bilibili
  • 重庆荣昌区委区政府再设“答谢宴”,邀请800余名志愿者机关食堂用餐
  • 苏东坡:人生就是哈哈哈哈哈
  • 巴基斯坦外长:近期军事回应是自卫措施
  • 上海“世行对标改革”的税务样本:设立全国首个税务审判庭、制定首个税务行政复议简易程序
  • 山东14家城商行中,仅剩枣庄银行年营业收入不足10亿
  • 中方就乌克兰危机提出新倡议?外交部:中方立场没有变化