深潜之眼 10月24日 00:47
Log4j2“核弹级”漏洞解析与应对
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

2021年12月,Apache Log4j2组件爆发了CVE-2021-44228远程代码执行漏洞,因其利用门槛低、影响范围广,被誉为“核弹级”漏洞。该漏洞源于Log4j2的lookup功能对字符串处理不当,攻击者可通过特制JNDI请求实现远程代码执行。文章详细描述了漏洞原理、复现步骤,并提供了内部自查方法,包括检测依赖版本和排查日志流量。同时,给出了升级至最新版本或通过设置JVM参数、限制外网访问、使用RASP/WAF等临时修复建议,帮助用户应对此严重安全威胁。

💥 **“核弹级”漏洞爆发**:Apache Log4j2组件在2021年12月爆出CVE-2021-44228远程代码执行漏洞,其利用方式简单、影响范围广泛,对众多使用该组件的业务框架构成了严重威胁,被业界称为“核弹级”漏洞。

💡 **漏洞原理深入剖析**:该漏洞的核心在于Log4j2在处理日志字符串时,对lookup功能中的`${}`语法解析不当,特别是当日志内容包含JNDI(Java Naming and Directory Interface)相关协议时,攻击者可以构造恶意的JNDI请求,诱导服务器远程加载并执行攻击者提供的代码,从而实现远程代码执行。

🔍 **复现与排查指南**:文章提供了详细的漏洞复现环境搭建和攻击步骤,包括部署恶意Java类、启动LDAP服务监听、以及通过抓包注入攻击payload。同时,为企业提供了内部自查方法,重点在于检测项目依赖的Log4j2版本是否低于2.15.0,以及通过搜索日志中的`${jndi:`关键字和排查JndiLookup、ldapURLContext等相关堆栈信息来发现潜在的攻击痕迹。

🛡️ **多维度修复建议**:针对此漏洞,官方推荐升级到最新安全版本(如2.15.0-rc2)。若无法立即升级,文章提供了多种临时修复方案,包括设置JVM启动参数`-Dlog4j2.formatMsgNoLookups=true`、提高JDK版本、限制不必要的网络访问、部署RASP(Runtime Application Self-Protection)阻断lookup调用,以及使用WAF(Web Application Firewall)拦截流量中的`${jndi:`等关键字。

原创 kalpa 2021-12-12 00:00

先是在野0day 《Grafana未授权任意文件读取》传出,随后更劲爆的《Apache Log4j2远程代码执行》的POC、EXP相继出现,后者的payloads传播速度之快、以及影响范围之广,使其在业内堪称 “核弹级” 漏洞。

0x00 前言

    

    2021年12月9日,“网安仔的不眠之夜”

   这个星期的安全圈 “躁” 起来了,先是在野0day《Grafana 未授权任意文件读取》被爆出,随后又出现了《Apache Log4j2 远程代码执行》;后者的传播速度之快、利用门槛之低、影响范围之广,使其在业内堪称 “核弹级” 漏洞。


0x01 漏洞描述


    2021年12月9日,Apache Log4j 的远程代码执行漏洞细节被公开,大量的业务框架都使用了该组件。此次漏洞是用于 Log4j2 提供的 lookup 功能造成的,该功能允许开发者通过一些协议去读取相应环境中的配置。该漏洞一旦被攻击者利用会造成严重危害


0x02 漏洞编号


CVE-2021-44228


0x03 影响范围


    Apache Log4j 2.x <=  2.15.0-rc2(据悉,官方rc1补丁有被绕过的风险)


0x04 漏洞复现


   此次漏洞的命令执行原理和 fastjson 一样,都存在远程加载的步骤。其主要问题出在 Log4j2 打印日志的时候对字符串 ${ } 处理不当。


    环境搭建:


    此次复现的环境为 Tomcat 9.0.41、Jdk 1.8( Jdk1.8.191以上默认不支持ldap协议,对于高版本的Jdk,则需要目标存在一定的依赖才行。



    

   接着,在目标服务器部署一个 Tomcat 服务(源自 https://www.t00ls.cc/thread-63695-1-1.html)

    


    攻击步骤:

    

    1. 首先写一个恶意类(这里的代码是弹出计算器,Exp不便展示)



    2. 启动一个 LDAP 服务监听端口(https://github.com/0x727/JNDIExploit)



    3. 抓包并在输入框填入攻击代码,接着拦截到包后,给包添加 cmd:(命令)参数并放包


    复现成功。


0x05 内部自查


1. 项目依赖版本检测


检测pom依赖版本是否低于 2.15.0

    <dependencies>  <dependency>    <groupId>org.apache.logging.log4j</groupId>    <artifactId>log4j-api</artifactId>    <version>2.15.0</version>  </dependency>  <dependency>    <groupId>org.apache.logging.log4j</groupId>    <artifactId>log4j-core</artifactId>    <version>2.15.0</version>  </dependency></dependencies>

    检测gradle依赖版本是否低于 2.15.0

      dependencies {  compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.15.0'  compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.15.0'}

      检测Ivy依赖版本是否低于 2.15.0

        <dependencies>  <dependency org="org.apache.logging.log4j" name="log4j-api" rev="2.15.0" />  <dependency org="org.apache.logging.log4j" name="log4j-core" rev="2.15.0" /></dependencies>

        检测SBT依赖版本是否低于 2.15.0

          libraryDependencies += "org.apache.logging.log4j" % "log4j-api" % "2.15.0"libraryDependencies += "org.apache.logging.log4j" % "log4j-core" % "2.15.0"

                 

          若没有使用上述工具,那么可以全局搜索项目中是否存在 log4j 的相关 jar 包,并通过 jar 包中的 /META-INF/MANIFEST.MF 文件查看 log4j 的版本。


                2. 日志/流量排查


                  (1. 排查日志或者解码后完整的请求数据包中是否存在${jndi:关键字。

               (2. 排查日志是否存在相关堆栈报错,堆栈里是否有JndiLookup、ldapURLContext、getObjectFactoryFromReference等与 jndi 调用相关的堆栈信息。


          0x06 修复建议


                  1. 通用修补建议


                    升级到最新版本 2.15.0-rc2 :

            https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc2


                   2. 临时修补建议

              1. 设置JVM启动参数-Dlog4j2.formatMsgNoLookups=true2. 尽量使用JDK 版本大于11.0.18u191、7u201、6u211,需要注意的是,即使是使用了 JDK 高版本也不能完全保证安全,依然存在本地绕过的情况。3. 限制不必要的业务访问外网。4. 采用 rasp 对 lookup 的调用进行阻断。5. 采用 waf 对请求流量中的 ${jndi 进行拦截。



                      参考链接:https://mp.weixin.qq.com/s/p2X1gu-rbiI3FZwteErnkQ





                  

              阅读原文

              跳转微信打开

              Fish AI Reader

              Fish AI Reader

              AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

              FishAI

              FishAI

              鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

              联系邮箱 441953276@qq.com

              相关标签

              Log4j2 CVE-2021-44228 远程代码执行 RCE Apache 漏洞 安全 Log4Shell Java JNDI LDAP 漏洞复现 修复建议 网络安全
              相关文章