common-collections中Java反序列化漏洞导致的RCE原理分析-华盟网

common-collections中Java反序列化漏洞导致的RCE原理分析

华盟学院山东省第二期线下学习计划

  0x00

  这几天在zone看到了有人提及了有关于common-collections包的RCE漏洞,并且http://zone.wooyun.org/content/23849给出了具体的原理。作为一个业余的安全研究人员,除了会利用之外,还可以探究一下背后的原理。

  0x01

  Java反序列化导致的漏洞原理上和PHP反序列一样,也是由于用户的输入可以控制我们传入的对象。如果服务端程序没有对用户可控的序列化代码进行校验而是直接进行反序列化使用,并且程序中运行一些比较危险的逻辑(如eval,登录验证等),就会触发一些意想不到的漏洞。实际上,这并不是什么新的问题了,有关于Java中的反序列化导致的漏洞可以看:

  https://speakerdeck.com/player/2630612322be4a2696a31775f2ed005d

  的slide了解一下。 而这次,主要探讨一下在特殊环境下,反序列化能否达到远程代码执行(RCE)。 参考文章3中给出了exp,并且在zone上有了很多的讨论,配合github上的jar文件生成一个序列化字符串,然后发送给漏洞站点就能触发。关于利用,并不是本文的重点。 问题从common-collections工具的各个transformer说起,这些transform主要用于对Map的键值进行转化。

  

common-collections中Java反序列化漏洞导致的RCE原理分析

  其中,国外研究人员发现类InvokerTransformer中的transform方法允许通过反射执行参数对象的某个方法,并返回执行结果。

  

common-collections中Java反序列化漏洞导致的RCE原理分析

  我们来写个代码测试一下:

  

以下是代码片段:

```

www.idc126.com

原文地址:https://exploits.77169.com/2015/20151112133155.shtm

本文由 华盟网 作者:怪狗 发表,其版权均为 华盟网 所有,文章内容系作者个人观点,不代表 华盟网 对观点赞同或支持。如需转载,请注明文章来源。

0

发表评论

在线咨询 简繁切换 返回评论 返回顶部