面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

admin 2024年5月19日02:22:34评论43 views字数 1073阅读3分34秒阅读模式

当面试官对你发起灵魂之问:如何绕过针对fastjson漏洞payload的WAF规则。如果此时你双手一摊,一脸懵逼那么可以肯定的是,你面试肯定挂了,如果你只知道老掉牙的URL编码、双写、大小写等方式,那么面试官可能会疑惑你可能只是个脚本小子。所以,如何才能获得面试官的青睐呢?那你就需要跟着我从fastjson发序列化过程中发现一些可以用来绕过WAF的点了。

除了上面提到的传统的绕过WAF的姿势,fastjson系列漏洞的不断发展本身也是对原有补丁的绕过过程。在fastjson的历史版本漏洞中出现的绕过方式包括但不限于:

  • 使用JVM类描述符,也就是类名前加L,类名后加;

  • 使用JVM数组描述符,也就是类名前加[

  • json内置,也就是json嵌套

  • 双重L;,也就是LLxxx;;

  • 以及最新版的漏洞通过expectClass来实现补丁绕过。

那么除了这些针对代码补丁的绕过方案,还有没有一些比较通用的染过方式呢?当然是有的,包括以下这些内容,如:

  • 使用多个逗号

  • 使用空白字符

  • 使用单引号替换JSON标准的双引号

  • 使用十六进制编码

  • 使用unicode编码

  • 使用_

  • 使用is

  • 使用单行注释与多行注释

那么接下来我们就来看看这些方法为什么能够用来绕WAF。

在FastJSON反序列化过程中进行词法解析时会调用com.alibaba.fastjson.parser.JSONLexer#skipWhitespace方法删除部分空白字符:

面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

并且如果碰到"/"会调用skipComment方法跳过注释,注意单行注释要在末尾加n

面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

在调用com.alibaba.fastjson.parser.JSONLexerBase#scanSymbol(com.alibaba.fastjson.parser.SymbolTable, char)扫描符号的时候会对x与u开头的十六进制与unicode进行解析

面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

如果feature配置中设置了AllowSingleQuotes则可以解析单引号,而该配置默认为True

面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

你甚至可以在设置字段名的时候不使用双引号,如果AllowUnQuotedFieldNamesTrue的话

面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

在解析JavaBean时,如果字段类型为布尔类型时,你甚至可以在其字段名前添加is,如果该字段本身不是以is开头的话。

面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

当然下划线与短划线_也可以尝试。

面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

如果有数字的话,你还可以添加进制标识来干扰WAF

面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

一些内部标准类,他们有更简单的写法,且是有缓存的

面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

特殊类,可以使用JVM的类与数组描述符。

面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

原文始发于微信公众号(一个安全研究员):面试官:如何绕过针对FastJSON漏洞Payload的WAF规则

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年5月19日02:22:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   面试官:如何绕过针对FastJSON漏洞Payload的WAF规则https://cn-sec.com/archives/2031999.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息