Apache log4j2-RCE 漏洞复现及修复建议(CVE-2021-44228)

yizhihongxing

首先我们来简单介绍一下这个漏洞。

Apache log4j2是一款Java日志框架,它可以帮助开发者进行应用程序日志的记录和管理。CVE-2021-44228是Apache log4j2存在的一种远程代码执行漏洞,攻击者通过恶意构造log4j格式的请求,可以在服务器上执行任意代码,从而造成严重后果。

下面我们来具体讲解一下如何复现这个漏洞,并提供修复建议。

复现漏洞

  1. 下载log4j-core-2.17.0.jar

首先我们需要从Apache官网上下载log4j-core-2.17.0.jar文件,这个版本中已经修复了CVE-2021-44228漏洞。

wget https://mirror.bit.edu.cn/apache/logging/log4j/2.17.0/log4j-core-2.17.0.jar
  1. 构造恶意请求

我们使用curl模拟一条HTTP请求,并将其作为参数传入java命令中执行。

curl 'http://localhost:8080' -H 'User-Agent: () { :; }; /bin/bash -c "echo vulnerable"' | java -jar log4j-core-2.17.0.jar

如果服务器中安装了受影响的log4j版本,那么此时会在服务器上执行恶意代码,返回一个类似“vulnerable”的字符串,从而证明漏洞存在。

修复建议

Apache已经针对这个漏洞发布了修复版本,建议各位用户尽快升级至2.17.0及以上版本。如果无法立即升级,可将log4j-core的版本临时替换为2.17.0,以避免漏洞被恶意利用。

此外,用户还可以通过以下方式进一步提高服务器的安全性:

  1. 拒绝从外部源加载任意类,需要在log4j2.xml配置文件中设置为false:
<Configuration>
  <Properties>
    ...
    <Property name="log4j2.formatMsgNoLookups">True</Property>
    <Property name="log4j2.isThreadContextMapInheritable">True</Property>
  </Properties>

  <Script name="Test" language="javascript">
    <ScriptBody>java.lang.Runtime.getRuntime().exec('calc')</ScriptBody>
  </Script>

  <Appenders>
    <RollingFile name="file_appender" fileName="log.log"
              filePattern="log-%d{yyyy-MM-dd}-%i.log">
      ...
    </RollingFile>
  </Appenders>

  <!-- 这里设置为false -->
  <AllowDuplicatedLogMessages>false</AllowDuplicatedLogMessages>

  ...
</Configuration>
  1. 移除JMS Appender,避免恶意攻击者通过JMS Appender发送非法代码:
<Configuration>
  ...
  <!-- 移除JMS Appenders -->
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    </Console>

    <RollingFile name="RollingFile" fileName="logs/myapp.log" filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
      <PatternLayout>
        <pattern>%d %p %c{1.} [%t] %m%n</pattern>
      </PatternLayout>
      <Policies>
        <TimeBasedTriggeringPolicy interval="6" modulate="true" />
        <SizeBasedTriggeringPolicy size="250 MB" />
      </Policies>
    </RollingFile>
  </Appenders>

  ...
</Configuration>

以上是针对Apache log4j2-RCE漏洞的攻略说明,在使用前请仔细阅读并评估漏洞对你的系统造成的威胁。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Apache log4j2-RCE 漏洞复现及修复建议(CVE-2021-44228) - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • jsp获取url路径的方法分析

    当我们进行网站开发时,经常需要获取当前页面的URL路径。在JSP中,获取URL路径的方法有多种,其中包括以下几种常用方法: 方法一:使用request对象获取URL路径 通过request对象的方法getRequestURL()可以获取当前页面完整的URL路径,通过getRequestURI()可以获取相对路径。 示例代码如下: <% String u…

    Java 2023年6月15日
    00
  • Java实现游戏抽奖算法

    Java实现游戏抽奖算法攻略 介绍 抽奖算法是游戏开发中常用的算法之一,比如在游戏中,我们需要抽取一些奖品给玩家,但我们又不希望凭运气就可以抽走所有的奖品,这时候就需要使用到抽奖算法来限制玩家的获奖概率,保障奖品的公平性。 Java作为一门通用的编程语言,在游戏开发中也有广泛的应用,因此,本篇文章将详细讲解如何使用Java实现游戏抽奖算法。 抽奖算法原理 常…

    Java 2023年5月19日
    00
  • java读取XML文件的四种方法总结(必看篇)

    下面是针对“java读取XML文件的四种方法总结(必看篇)”这篇攻略的详细讲解。 提供四种方法 该攻略提供了使用Java读取XML文件的四种方法,分别是: 使用SAX方式解析XML文件 使用DOM方式解析XML文件 使用JDOM方式解析XML文件 使用XMLBeans方式解析XML文件 对于每种方法,攻略都提供了详细的介绍和示例代码,并且针对各种场景,推荐了…

    Java 2023年5月20日
    00
  • JSP实现在线考试与成绩评测

    确定需求和分析 首先确定在线考试的基本需求,例如考试的种类、时长和考试的试题数量等等。然后根据需求,分析考试的流程和评分方法。 设计数据库 设计一个用于存储考试题目和考生答题情况的数据库。考试题目数据可以包含题目的题目类型、难度等级、答案选项等信息。考生答题情况数据可以包含考生的姓名、考号、所选答案、答题时间等信息。 构建网站环境 在本地计算机硬盘上搭建网站…

    Java 2023年6月15日
    00
  • SpringBoot创建并简单使用的实现

    下面我会给出一份详细的Spring Boot创建并简单使用的攻略,包含以下几个部分: 环境准备 创建Spring Boot项目 使用Spring Boot 示例1:创建RESTful API 示例2:集成Thymeleaf模板引擎 环境准备 在开始创建Spring Boot项目之前,需要进行相关的环境准备。首先,需要确保你已经安装了Java和Maven,在安…

    Java 2023年5月15日
    00
  • 深入理解Java注解类型(@Annotation)

    深入理解Java注解类型(@Annotation) 引言 Java注解(Annotation)是Java语言中非常常见的一种特殊的语法元素,它可以为Java程序的编写提供更加丰富、灵活的方式。在本篇文章中,我们将详细地了解Java注解的定义、分类、使用方法及其在实际开发中的应用。 定义 Java注解(Annotation)是Java语言中的一种特殊语法元素,…

    Java 2023年5月20日
    00
  • 利用sohu网站URL跳转漏洞欺骗邮箱密码

    作为网站的作者,我首先要声明的是,本人强烈反对任何形式的网络攻击行为,严禁利用所得到的知识进行非法活动。以下是相关知识的介绍,仅作学习和研究使用。 什么是URL跳转漏洞 URL跳转漏洞(也称为Open Redirect漏洞),指的是攻击者可以通过在URL中注入恶意的链接,将用户重定向到一个不安全的网站。当用户点击这个链接并进行访问后,攻击者就可以获得用户的敏…

    Java 2023年6月15日
    00
  • 教你1秒将本地SpringBoot项目jar包部署到Linux环境(超详细!)

    好,这里是“教你1秒将本地SpringBoot项目jar包部署到Linux环境(超详细!)”的完整攻略。 1. 前置条件 在开始操作前,需要准备好以下环境: 一台Linux服务器,能够连接到互联网,并且已经安装好了Java运行环境(JRE 或 JDK)。 一份SpringBoot应用程序代码,在本地环境已经编译为可运行的jar包。 本教程中的示例代码可以在我…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部