fastjson漏洞以及流量分析

原理

解析json时,会使用autoType实例化某一个具体的类,并调用set/get方法访问属性。漏洞出现在autoType处理json对象时,没有对@type字段进行完整的安全性验证,可以传入危险的类并调用危险类连接远程RMI服务器,通过恶意类执行恶意代码,进而实现远程代码执行漏洞。

判断

正常请求时GET请求并且没有请求体,可以通过构造错误的POST请求,即可查看在返回包中是否有fastjson这个字符串来判断

反序列化

通过修改包中@type的值反序列化到指定的类型,通过构造恶意方法让代码执行

流量特征

JNDI注入+RMI

com.sun.jndi.rmi.object.trustURLCodebase
com.sun.jndi.cosnaming.object.trustURLCodebase

com.sun.rowset.JdbcRowSetImpl
rmi://x.x.x.x/xxx

JNDI注入+LDAP

com.sun.rowset.JdbcRowSetImpl
ldap://x.x.x.x/xxx

JdbcRowSetImpl利用链

com.sun.rowset.JdbcRowSetImpl

TemplatesImplcom.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl

一个仍在爬山的人