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库:

  1. log4j-core
  2. 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漏洞攻击保姆级教程(仅供测试请勿攻击他人)

突发!Apache Log4j2 报核弹级漏洞。。赶紧修复!!

突发。。Apache Log4j2 报核弹级漏洞。。赶紧修复。。