【原创】Spring Data Redis <=2.0.3反序列化漏洞
2021-06-20 20:04
标签:guid 代码执行 png row set https mit def lin Spring Data Redis隶属于Spring Data家族, 提供简单易用的方式来访问Redis缓存。 Spring Data Redis在往Redis里面写数据的时候,默认会先对数据进行序列化,然后把序列化之后的字节码写入Redis;然后当Spring Data Redis从Redis里取数据的时候,会取出字节码进行反序列化操作,在反序列化的过程中没有对目标类进行校验和过滤,可导致远程任意代码执行。 攻击路径: 1.首先准备反序列化payload,参考ysoserial系列。 2.把生成的payload写入Redis中: redis.set("\xac\xed\x00\x05t\x00\brebeyond",Payload) 这样,名为rebeyond的key中就有了我们构造的payload。 最好选择Redis中已经存在的key,这样等Spring取数据的时候就可以触发代码执行。 3.等待Spring读取我们已经覆盖的key,示例如下: 4.Spring侧的机器成功弹出计算器: 调用栈如下: 其他: This vulnerability is tested on jdk1.8.0_144+spring 5.0.3+spring data redis 2.0.3+ commons-collections4:4.0 Common-collections4 is not necessary.Some modifications to payload can be applied to
尝试把这个问题提给Spring,不过Spring认为Redis在内网,开发人员有必要保证Redis的安全,所以没有认可该问题,只是更新了他们的产品guidelines ,让用户确保自己的Redis用在安全网络中。下图是pivotal的答复。但是我觉得认为Redis在内网就是安全的有点太乐观,我觉得对于spring来讲更好的解决方案是把默认的序列号引擎由DefaultDeserializer 改为JsonDeserializer:) [0] https://jira.spring.io/browse/DATAREDIS-780 [1] https://github.com/spring-projects/spring-data-redis/commit/1f6790b10099f26c23c46ae5a099ba1023f055b1
文章标题:【原创】Spring Data Redis <=2.0.3反序列化漏洞
文章链接:http://soscw.com/essay/96569.html