Fastjson<=1.2.41漏洞复现

Fastjson<=1.2.41漏洞复现

Posted by SEVENTEEN on April 8, 2022

前言

   上一篇分析了Fastjson低版本漏洞的成因以及利用,这篇来学习一下高版本Fastjson的补丁绕过。

影响范围

   Fastjson <= 1.2.41

前提条件

   autoTypeSupport属性为true才能使用(fastjson>=1.2.25默认为false)。

环境搭建

   这里环境用的是1.2.26,所以手动改一下autoTypeSupport属性。

补丁分析

   补丁大部分内容在com.alibaba.fastjson.parser.ParserConfig中。 首先是AutoType默认不开启,并且增加了checkAutoType方法。

   如果AutoType开启后,进入到if中进行两次for循环。分别通过acceptList和denyList用来检测@type指定的类是否在白名单或黑名单。 如果在白名单直接调用TypeUtils.loadClass返回,如果在黑名单就抛出异常。

   如果AutoType关闭,就先使用黑名单匹配,再进行白名单匹配。

   如果黑白名单逗没有匹配到并且AutoType开启,则直接调用TypeUtils.loadClass加载类。

漏洞分析

   前面看到如果黑白名单中没有匹配到并且AutoType开启,则直接调用TypeUtils.loadClass加载类。 进入到TypeUtils.loadClass方法中可以看到匹配到L开头并且;结尾的类名后会去掉这两个字符再次load, 所以我们将@type的类名开头加入L,结尾加入;即可绕过。

There Is Nothing Below

   

Turn at the next intersection.