apache log4j2漏洞攻防演练与补丁升级说明

请记得使用2.16.0而不是2.15.0,因为2.15.0本身也有漏洞(刚升完2.15.0的那些人又要折腾了)

漏洞没有人们想的这么可怕

我这边是在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.16.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升级成功。

以上攻击的“攻击环境”不做传授,因为太危险了,这个漏洞是可以“秒杀”你的服务器的,有兴趣的同学自己去研究好了,也不需要来问我,此处只做演示攻击效果来用予说明。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TGITCIC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值