Java日志组件之三Log4j2漏洞剖析及重现

news2025/7/22 21:43:19

一、前言

这一篇我们来介绍一下史上第二严重的安全漏洞是个什么情况,原理是什么,如何重现。

二、Log4j2 Lookup机制

Log4j2 Lookup机制最重要的功能就是提供一个可扩展的方式让你可以添加某些特殊的值到日志中。你调用logger.info(name);这样的语句,如果要输出的name是带了 ${},它就会给你分发到对应的Lookup具体类去执行而不是直接输出字符串。

先搭建一个SpringBoot项目,然后将spring-boot-starter-logging这个依赖移除,自己引用log4j-api-2.13.3.jar、log4j-core-2.13.3.jar这两个包,注(这是我们从自己以前老机器上找到的,现在官方应该是已经修复了,直接maven依赖进来应该是不能重现了)。

注:用POSTMAN调用发送请求传参数值为  ${java.os},

控制台会输出:Mac OS X 10.15.7 unknown, architecture: x86_64-64,其执行时序图如下

1、MessagePatternConverter.format

2、StrSubstitutor.resolveVariable

3、Interpolator.lookup

4、SystemPropertiesLookup.lookup

这就把我操作系统的信息就输出来了,就是用Log4j2可以输出变量,但好像这问题也不大吗,输出就输出呗有毛关系,请看下图红色标出来的,这才是大漏洞。

三、他是怎么来黑的呢

注:用JNDI注入,变量可以用来被执行远端代码。

1、JndiObj

注:这里写的是rm -rf * ,您可别执行,不然把自己服务器干掉了。

2、JndiServer

注:在你的机器上启动JNDI服务,然后jndiObj里你想做什么都行,

Runtime.getRuntime().exec()会在调用jndi接口的机器上执行。

3、发送请求

启动SpringBoot项目,调用接口发送数据。

注:我这里演示用的是同一台机器,但也可以很明显看得出来是在服务器上去执行远程黑客机器上的代码(那个代码在你的服务器上执行,而不是黑客自己的机器)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1157046.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【赠书第1期】零基础学无人机航拍与短视频后期剪辑实战教程

文章目录 前言 1 购买前须知 2 准备工作 3 飞行控制 4 拍摄技巧 5 安全提示 6 推荐图书 7 粉丝福利 前言 随着科技的不断发展,无人机已经不再是军事装备的专属,它已经成为了消费级无人机的主流产品。作为国内领先的无人机生产商,大疆…

【腾讯云 HAI域探秘】StableDiffusionWebUI一小时搞定100张设计图

目录 前言一、选择 HAI部署的优势二、HAI 搭建AI绘图服务实现思路三、生成设计图操作流程1、新建HAI应用2、StableDiffusionWebUI(1)功能介绍(2)页面转中文(3)线稿生成图 四、部署StableDiffusionWebUI服务…

通讯网关软件033——利用CommGate X2OPC实现PI数据写入OPC Server

本文推荐利用CommGate X2OPC实现从PI服务器读取数据并写入OPC Server。CommGate X2OPC是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。 【案例】如下图所示,实现从PI实时数据库获取数据并写入OPC Server。 【解决…

maven环境变量的配置

windows系统 1. win键 r,输入sysdm.cpl打开系统属性界面,选择高级栏目,点击环境变量菜单打开环境变量界面。 2. 选择系统变量下的新建菜单,变量名输入MAVEN_HOME,变量值输入maven的安装目录,例如&#xff…

CNN卷积神经网络模型的GPU显存占用分析

一、参考资料 浅谈深度学习:如何计算模型以及中间变量的显存占用大小 如何在Pytorch中精细化利用显存 二、相关介绍 0. 预备知识 为了方便计算,本文按照以下标准进行单位换算: 1 G 1000 MB1 M 1000 KB1 K 1000 Byte1 B 8 bit 1. 模型参数量的计…

基于构件的开发(CBD)

基于构件的开发(Component-Based Development,简称CBD)或基于构件的软件工程(Component-Based Software Engineering,简称CBSE)是一种软件开发新范型,它是在一定构件模型的支持下,复…

FPGA与ASIC有什么差异?二者该如何选用?

前言 对于一个数字电路的新手来说,这可能是会经常遇到的一个问题:FPGA和ASIC之间的区别是什么? 接下来本文将尝试讲解 “什么是FPGA?” 和 “什么是ASIC?”,然后讲述一些关于FPGA和ASIC的问题,例如它们之间…

【【FIFO to multiplier to RAM的 verilog 代码 和 testbnench 】】

FIFO to multiplier to RAM的 verilog 代码 和 testbnench 只完成了单个数据的传输 大数据需要修改 tb 或者基本连线 FIFO.v //synchronous fifo module FIFO_syn #(parameter WIDTH 16, // the fifo wideparameter DEPTH 1024, …

【MATLAB】全网唯一的7种信号分解+ARIMA联合的时序预测算法全家桶

有意向获取代码,请转文末观看代码获取方式~ 大家吃一顿火锅的价格便可以拥有7种信号分解ARIMA组合的时序预测算法,绝对不亏,知识付费是现今时代的趋势,而且都是我精心制作的教程,有问题可随时反馈~也可单独获取某一算…

【三方登录-Apple】iOS 苹果授权登录(sign in with Apple)之开发者配置一

记录一下sign in with Apple的开发者配置 前言 关于使用 Apple 登录 使用“通过 Apple 登录”可让用户设置帐户并使用其Apple ID登录您的应用程序和关联网站。首先使用“使用 Apple 登录”功能启用应用程序的App ID 。 如果您是首次启用应用程序 ID 或为新应用程序启用应用程序…

加速计算卡设计方案:389-基于KU5P的双路100G光纤网络加速计算卡

基于KU5P的双路100G光纤网络加速计算卡 一、板卡概述 基于Xilinx UltraScale16 nm KU5P芯片方案基础上研发的一款双口100 G FPGA光纤以太网PCI-Express v3.0 x8智能加速计算卡,该智能卡拥有高吞吐量、低延时的网络处理能力以及辅助CPU进行网络功能卸载的能力…

SpringBoot配置文件yml文件基础知识

yaml简介 YAML(YAML Aint Markup Language),一种数据序列化格式 优点:容易阅读容易与脚本语言交互以数据为核心,重数据轻格式 YAML文件扩展名.yml(主流).yamlyaml语法规则 大小写敏感 属性层级…

10.1 am62x平台怎么从ospi启动uboot

本文主要内容: 1 背景(硬件原理图与分区信息) 2 AM62x平台bootloader组成 3 设置SK-AM62B启动方式 4 烧录镜像到OSPI分区 5 解决Message not acknowledgedAuthentication failed!问题 1 背景 Ti的SK-AM62B评估板,通过OSPI接口,连接了一个Nor Flash:S28HS512TGABHM01…

聊天室系统源码 匿名聊天系统源码 在线聊天室系统源码 可发语音 图片 适用PC+WAP

PHP匿名在线聊天室系统源码,适用于PC和WAP端,支持语音和图片传输 通过修改数据库config\settings.php,可以将其用于搭建客户聊天专用的网站 要搭建一个专门用于与客户聊天的网站,您可以使用这个PHP匿名在线聊天室系统源码 该源码…

一文带你速通Sentinel限流规则(流控)解读

目录 前置知识速补 基本介绍 流控模式 直接模式 关联模式 链路模式 流控效果 直接失败 Warm Up(预热) 排队等待 前置知识速补 QPS每秒查询率(Query Per Second):每秒查询率QPS是对一个特定的查询服务器在规定时间内所处理流量多…

基于阿基米德优化算法的无人机航迹规划-附代码

基于阿基米德优化算法的无人机航迹规划 文章目录 基于阿基米德优化算法的无人机航迹规划1.阿基米德优化搜索算法2.无人机飞行环境建模3.无人机航迹规划建模4.实验结果4.1地图创建4.2 航迹规划 5.参考文献6.Matlab代码 摘要:本文主要介绍利用阿基米德优化算法来优化无…

综合实验案例配置

目录 核心交换机与出口路由器的连接 网络出口的配置 策略路由的配置 1.教学楼的流量走电信出口,宿舍楼流量走联通出口(基于源) 2.访问带内心的服务器走电信出口,访问联通服务器走联通出口 案例图如下: acsw的配置…

二叉树问题——平衡二叉树问题

摘要 本博文主要介绍平衡二叉树问题包括,二叉树的高度差,是否为平衡二叉树,有序链表转二叉搜索树,将二叉搜索树变平衡等。 一、平衡二叉树详解 1.1 判断二叉树是否平衡 /*** Definition for a binary tree node.* public class…

一篇博客读懂顺序表 —— Sequence-List

目录 一、顺序表的初始定义 1.1新建头文件和源文件 1.2 SeqList.h 中的准备工作 二、顺序表的初始化与销毁 三、首尾插入元素 四、首尾删除元素 五、中间插入元素 六、中间删除元素 七、查找指定元素下标 八、源代码 一、顺序表的初始定义 1.1新建头文件和源文件 当我…

zip2john 爆破zip工具

1.使用zip2john工具输出zip文件hash Zip2john 1.zip > 1.txt 2.使用john工具进行zip文件爆破 John 1.txt 如图所示: 该zip密码为19950101