一 fastjson1.2.24
修复方式: 添加黑白名单校验
二 Templateslmpl利用链
条件: 开启autoTypeSuppose
三 fastjson1.2.41
条件: 开启autoTypeSuppose
利用方式: "L;" 绕过
修复方式: 过滤一次"L;"
四 fastjson1.2.41中checkAutoType逻辑
简单来说
不管开不开autoTypeSuppose,都会经过黑白名单,最后开启autoTypeSuppose才会返回类,否则即使是业务类、测试的User/Cat都不会通过。
后续的47/68 绕过则围绕着mapping和期望类入手
四 fastjson1.2.42
条件: 开启autoTypeSuppose
利用方式: 双写"L;"
修复方式: 校验LL
五 fastjson1.2.43
条件: 开启autoTypeSuppose
利用方式: [开头的绕过方式还没有去除
六 fastjson1.2.47 mappings绕过
利用方式: mappings写入
修复方式:
1 safeModeclass
2 class的val无法将类写入mapping
七 fastjson1.2.68 safeMode
开启safeMode后,不解析autoType,除非自定义的
八 fastjson1.2.68 autoCloseable 期望类绕过
绕过方式:比较复杂,利用期望类autoCloseable绕过未开启autoTypeSuppose
转标表明:https://www.cnblogs.com/huim/p/16566911.html
参考
fastjson24-47: https://www.cnblogs.com/nishoushun/p/16074640.html
TemplatesImpl链: http://www.red3691.top/2021/12/20/Fastjson-TemplatesImpl链-反序列化漏洞分析/
fastjson用法: http://www.lmxspace.com/2019/06/29/FastJson-反序列化学习/
反射: https://blog.csdn.net/Eve_perfect/article/details/125675719
fastjson1.2.68分析: https://y4er.com/posts/fastjson-bypass-autotype-1268/#分析