freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

FastJson版本差异以及绕WAF的思路
2023-10-01 22:08:28

前言

Fastjson

原理

和之前一样,我们也对fastjson的原理有一个深度的剖析

在各个fastjson版本中的安全漏洞的修复流程中,大概主要是下面这些内容

  • fastjson 1.2.24之后,引入checkAutoType机制,默认关闭autoTypeSupport,如果需要打开checkAutoType,则使用黑名单,也添加了添加黑名单的接口

  • fastjson 1.2.41之后,在ParserConfig中将黑名单进行了hash处理,防止绕过,而在ParserConfig#checkAutoType中进行了L ;的去除,可以双写绕过

  • fastjson 1.2.42之后,在ParserConfig#checkAutoType中如果出现了多个L,就会抛出异常,但是前面除了L同样也可以使用[

  • fastjson 1.2.43之后修复了利用[的漏洞

  • fastjson 1.2.45之后,修复了org.apache.ibatis.datasource.jndi.JndiDataSourceFactory黑名单绕过

  • fastjson 1.2.47之后,修复了使用Class.class绕过checkAutoType检查,在MiscCode处理Class类的地方,设置Cache为fasle, 并且 loadClass 重载方法的默认的调用改为不缓存,这就避免了使用了 Class 提前将恶意类名缓存进去

  • fastjson 1.2.50 - fastjson 1.2.51中在ParserConfig#checkAutoType#1411的类过滤中添加了RowSet.class,而且将oracle.jdbc.rowset.OracleJDBCRowSet添加进入了黑名单

  • fastjson 1.2.68之后将期望类java.lang.AutoCloseable加入黑名单

  • fastjson 1.2.80之后添加了黑名单

我们这里主要是看看在fastjson在处理json串的时候,是如何对我们我们的对象进行还原和属性值的恢复

在进行JSON处理的过程中,在DefaultJSONParser#parseObject方法中

ObjectDeserializer deserializer = config.getDeserializer(type);

# web安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录