Weblogic最近的补丁日更新了多个远程代码执行漏洞,笔者对比最新的补丁发现黑名单列表中新增了“com.fasterxml.jackson.databind.node”。
image
前段时间有ctf赛事和多篇技术文章里面都提到过jackson有从原生反序列化执行到getter的调用链,而weblogic默认开启的t3和iiop协议就有原生反序列化操作。

在weblogic里面搜索是否有jackson相关jar。
image-1704164578827
可以看到weblogic默认引用jackson相关jar包,但是版本比较老,相关class都没有继承Serializable,自然不能执行从原生反序列化到getter的调用链。

weblogic每个季度都有补丁,下载weblogic上一个季度的补丁搜索下jackson相关jar包看下。
image-1704164590932
可以看到在最近的补丁里面weblogic已经更新了jackson的jar包,把这些jar包引入到idea中发现这个版本的jackson是可以执行从原生反序列化到getter的调用链,这条调用链的分析可以参考这篇文章:https://xz.aliyun.com/t/12509

现在需要在weblogic jar包中寻找一个继承了Serializable接口并且getter方法里面有危险操作的class,weblogic黑名单列表已把常见class中getter方法能rce的都已加入到黑名单列表中,例如“com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl,com.bea.core.repackaged.springframework.transaction.jta.JtaTransactionManager…”都在黑名单列表当中,只能另外找一个新的class了,经过几个小时的寻找,在某个class的getter方法中可以做到rce的效果,但是这个class只影响某一个发行版本,利用上不太通用。搜索后发现在之前的ctf中出现过从getter到jndi的调用链,并且相关的class不在weblogic黑名单中,文章地址:https://y4er.com/posts/real-wolrd-ctf-old-system-new-getter-jndi-gadget/

修复建议

及时更新补丁,参考oracle官网发布的补丁:https://www.oracle.com/security-alerts/cpuoct2023.html