Fastjson是Alibaba开发的,Java语言编写的高性能Json库,号称Java语言中最快的Json库。针对Fastjson反序列化漏洞原理分析和Poc网上以及有很多,本文仅分享如何快速发现Fastjson反序列化漏洞,方便安全测试人员开展安全测试及修补漏洞。
文章中涉及到的工具和源码仅供安全测试和学习使用,否则后果自负,与作者无关。
0x01 反序列化原理
Fastjson反序列化,即在代码中调用JSON.parse(jsonstr)、JSON.parseObject(jsonstr)等方法的时候,实现将json格式的字符转换为一个Java对象的过程。在进行反序列化的时候会根据json中的字段自动调用对象的set和get方法,当方法中存在可利用点的时候就会造成安全漏洞。具体分析原理分析网上已经很多了,这里不做太多阐述。
0x02 Poc分析
在大多数应用场景中,Fastjson仅仅作为第三方依赖嵌入到项目中,这种形式导致了Poc无法控制Web容器的Response对象(当然针对特定容器可以,使用TemplatesImpl加载字节码,这个poc比较老了,基本都补了)实现命令执行结果回显输出。目前网上公开的Poc基本都是利用JNDI注入,使用JNDI注入实现代码执行的Poc都有一个弱点,就是需要目标服务器能够出互联网。
0x03 漏洞检测
对于需要出网才能利用的漏