apache log4j2漏洞攻防验练与补丁升级说明
Posted TGITCIC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了apache log4j2漏洞攻防验练与补丁升级说明相关的知识,希望对你有一定的参考价值。
漏洞没有人们想的这么可怕
我这边是在12月7号左右得到的情报,当时拿到手我看了一眼,一点没有作出任何担忧。12月9号一早有人给我报了,下午左右我们的安全人员也向我报了。我依旧没有担忧。
是因为log4j这个东西早很多年已经报过几起类似的事件了。因此这一块我特别留意。
首先,我们前端有了腾讯WAF,已经挡掉了类似的攻击。
其次,我们的JDK是1.8但是我们升过一次级,>1.8_191版。因此就算受到攻击了也没事。
当你拥有较高版本jdk1.8(>1.8_191)时攻击进来是什么样的
这是在拥有高版jdk1.8受到攻击时的效果演示
攻击报文
后端服务器上的显示
看,什么事都没有。
如果你的jdk1.8版本较低时同时你拥有该漏洞系统会发生什么
我系统内有一个openjdk1.8的早期版本,我把web项目换成这个低版本的jdk然后我们看发生了什么。
把项目的jdk换成低版本
运行项目并喂入攻击参数
它按照我们的有危害代码,在服务器上如期望打开了safari浏览器。
以下是有危害的代码
以下是在本地被打开的safari浏览器。
更恐怖的是我自己还试了:
- 在远程服务器建立一个目录;
- 删掉服务器上的Redis
spring boot上如何升级相关的log4j2的全步骤
此次log4j漏洞存在于两个核心lib库:
- log4j-core
- log4j-api
分配CVE编号:CVE-2021-44228
CVSS评分:10.0(最高只能10分)
因此,对于spring boot项目,我们需要按照如下排查手段
第一步:先排除spring-boot-starter-log4j2包内的log4j-core和log4j-api
<properties>
<log4j2.version>2.15.0 </log4j2.version>
</properties>
<!-- 先排除老版本log4j2 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- 先排除老版本log4j2 -->
再把log4j升到最高版本
<!-- 排除了老版本log4j2后升级到最新的2.15.0 -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>$log4j2.version</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>$log4j2.version</version>
</dependency>
<!-- 排除了老版本log4j2后升级到最新的2.15.0 -->
第二步:确认该模块内无其它第三方库特别是:nacos、redis、mongo会引入老的log4j-api和log4j-core包,如有:排除掉
比如说,我这边的模块内有用到nacos,而nacos会自己把第三方的log4j-core, log4j-api包引入。因此你除了第一步执行外没用,你会发觉你依然会有“老”的log4j-core和log4j-api包。那么把第三方引入的log4j包也排干净。
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery
</artifactId>
<version>$nacos-discovery.version</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
第三方:工程启动不得有log相关红色报警,项目可以起,日志在本地以及相关环境内都可以正常吐出
验证把log4j2升级到了官方最新版后的效果
我们依然使用jdk1.8较低的版本来运行
喂入恶意代码
得到结果如下
系统终于没有再打开我的safari了,而是直接把这段代码给打印输出了。
截止到这,整个log4j2升级成功。
以上攻击的“攻击环境”不做传授,因为太危险了,这个漏洞是可以“秒杀”你的服务器的,有兴趣的同学自己去研究好了,也不需要来问我,此处只做演示攻击效果来用予说明。
以上是关于apache log4j2漏洞攻防验练与补丁升级说明的主要内容,如果未能解决你的问题,请参考以下文章
烽火狼烟丨Apache Log4j2远程代码执行漏洞(CVE44832)通告
漏洞复现Apache Log4j2 lookup JNDI 注入漏洞(CVE-2021-44228)
使用云效Codeup10分钟紧急修复Apache Log4j2漏洞
Apache Log4j2 - JNDI RCE漏洞攻击保姆级教程(仅供测试请勿攻击他人)