ToB企服应用市场:ToB评测及商务社交产业平台

标题: Fastjson 代码执行 CVE-2022-25845 [打印本页]

作者: 耶耶耶耶耶    时间: 2022-8-30 12:26
标题: Fastjson 代码执行 CVE-2022-25845
漏洞简介

  Fastjson 代码执行漏洞,该漏洞允许攻击者绕过 Fastjson 中的"AutoTypeCheck"机制并实现远程代码执行
  影响版本:1.2.80及以下版本,即, java.lang.reflect.Type) 会检测目标类中是否属于Throwable 的扩展,之后就会调用 ThrowableDeserializer.deserialize()
[img=720,267.6106194690266]https://www.hetianlab.com/headImg.action?news=2122d358-50be-40bb-a83c-48e71a3bafa6.png[/img]
  所以初步得出结论,如果目标类属于 Throwable 的扩展类,就可以实现打开autoType的类似操作,去调用任何类
[img=720,237.44272775705915]https://www.hetianlab.com/headImg.action?news=d1ba3d9c-bede-4f37-840c-8519893b2967.png[/img]
  为了验证这个猜测,我们修改一下文件
  1. <dependency><br>    <groupId>com.alibaba</groupId><br>    <artifactId>fastjson</artifactId><br>    <version>1.2.82</version><br></dependency>
复制代码
[img=720,390.9375]https://www.hetianlab.com/headImg.action?news=de5c4bdb-f353-48aa-a9f0-5769fffc7850.png[/img]
  依然可以利用成功
  继续关注函数 com.alibaba.fastjson.parser.ParserConfig#getDeserializer(java.lang.Class, java.lang.reflect.Type) 会调用 createException 去创建反序列化函数
[img=720,156.9007263922518]https://www.hetianlab.com/headImg.action?news=e20ad1bf-2cc3-4104-8184-6779ce5525de.png[/img]
  com.alibaba.fastjson.parser.deserializer.ThrowableDeserializer#createException
[img=720,285.641230523372]https://www.hetianlab.com/headImg.action?news=44cf15e4-b91a-47ba-a389-22d7a31a2117.png[/img]
  最后还是在函数 com.alibaba.fastjson.parser.ParserConfig#getDeserializer(java.lang.Class, java.lang.reflect.Type) 中实现了代码执行
[img=720,179.63956748097718]https://www.hetianlab.com/headImg.action?news=99d5caba-d8f3-4ceb-bf77-6fc29f64bc85.png[/img]
  如此整个漏洞就分析完成了
漏洞修复

  官方提供了以下四种修复方式
  ● 升级到最新版本1.2.83
  ● safeMode加固
  ● 升级到fastjson v2
  ● noneautotype版本
 
总结反思

  整个漏洞的分析花了很多时间,根据参考文章 CVE-2022-25845 – Analyzing the Fastjson “Auto Type Bypass” RCE vulnerability 来来回回加断点调试了很久。对这个漏洞做一个自己的总结。在默认未开启 AutoType 时,Fastjson 是基于白名单的获取外部类,通过 搜索checkAutoType 发现ThrowableDeserializer#deserialze 中的调用,当然也不止这一处,只是这处能进一步的利用,通过满足类属于 Throwable 的扩展类就可以触发,最后实现代码执行。但是这个代码在实际场景中的利用要求较为苛刻,首先满足类是 Throwable 的扩展类,同时其中必须有危险的 set 方法。
  更多靶场实验练习、网安学习资料,请点击这里>>
 
搜索
复制

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4