竹笋

注册

 

发新话题 回复该主题

Fastjson代码执行CVE2022 [复制链接]

1#
北京到哪家治疗白癜风最好 http://pf.39.net/bdfyy/bdfzj/

漏洞简介


  Fastjson代码执行漏洞,该漏洞允许攻击者绕过Fastjson中的"AutoTypeCheck"机制并实现远程代码执行


  影响版本:1.2.80及以下版本,即=1.2.80

漏洞复现


  我们利用idea创建maven项目搭建漏洞环境,在pom文件中添加

dependencygroupId
  创建文件夹
  在下面添加两个java文件

package
  

package
  运行PocDemo

 ①网安学习成长路径思维导图

 ②60+网安经典常用工具包

 ③+SRC漏洞分析报告

 ④+网安攻防实战技术电子书

 ⑤最权威CISSP认证考试指南+题库

 ⑥超页CTF实战技巧手册

 ⑦最新网安大厂面试题合集(含答案)

 ⑧APP客户端安全检测指南(安卓+IOS)

漏洞分析

AutoType


  我们知道在fastjson1.2.25后设定了autoType只有打开autoType之后,fastjson是基于内置黑名单来实现安全的,如此可能会造成安全风险,就是绕过黑名单


  不开启时,是基于白名单进行防护的,这个漏洞的产生就是未开启autoType时产生的。


  但是未开启autoType时是基于白名单,是很难实现代码执行的,所以我们就需要想办法BypassAutoType默认禁用策略,可以实现调用任意类


  开启autoType后,最终调用的是config.checkAutoType


  
  其中声明了各种被黑名单列入的类,是通过十六进制来记录各种类,可以在fastjson-blacklist,看到具体类的名称

Throwable


  我们注意到在


   中也同样调用了

checkAutoType


  同时我们可以发现在
  所以初步得出结论,如果目标类属于Throwable的扩展类,就可以实现打开autoType的类似操作,去调用任何类


  为了验证这个猜测,我们修改一下文件

package
  依然可以利用成功


  继续
  
  最后还是在函数


  如此整个漏洞就分析完成了

漏洞修复


  官方提供了以下四种修复方式


  ●升级到最新版本1.2.83


  ●safeMode加固


  ●升级到fastjsonv2


  ●noneautotype版本

总结反思


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


  更多靶场实验练习、网安学习资料,请访问合天网安实验室。

分享 转发
TOP
发新话题 回复该主题