log4j2漏洞

什么是log4j2

Log4j2是java日志框架(java开发中的基础组建)用来记录处理日志信息

log4j2的漏洞原理

CVE-2021-44228

Log4j2提供了Lookup功能模块,就是因为该模块所导致的问题
Log4j在处理打印程序日志记录时,如果日志中包含${}时,则会去解析其中的值,(例如 ${java.version} 会被解析为对应的Java版本)攻击可以利用这一点进行JNDI注入, 使用LDAP/RMI协议,从远程服务器上获取恶意的class文件(对象),并在本地加载返回的Class类,造成命令执行漏洞

那么什么又是jndi注入、LDAP/RMI

JNDI

JNDI(Java Naming and Directory Interface,Java命名和目录接口)
JNDI相当与是Java里面的一个api接口,用于访问不同的命名和目录服务(如 LDAP、DNS、RMI 等)

JNDI的架构只要由两部分组成:
   JNDI API --- Java应用程序用来访问目录服务的接口
   JNDI SPI(服务供应接口)--- 为底层的具体目录服务提供统一接口 

JNDI注入原理

JNDI接口在初始化时,如果Lookup(xxxxx)方法的参数可控,攻击者就可以将传入恶意参数,通过jdni去加载恶意的类class。攻击时常用的就是通过`RMI`和`LDAP`两种协议。

 LDAP和RMI

LDAP

LDAP(轻量级目录访问协议)---端口 389(明文) 636(LDAPS,加密)
  定义:是由目录数据库和一套访问协议组成的系统。
  作用:反序列化时会被调用(如用户认证、组织架构查询)

RMI

 RMI(远程方法调用)---端口 1099
  作用:该协议用于远程调用应用程序编程接口,使客户机上运行的程序可以调用远程服务器上的对象

LDAP和RMI区别

主要区别在于它们的目标和用途:
   JNDI主要用于查找和访问网络资源,
   而RMI主要用于在网络上的不同Java虚拟机之间进行对象方法调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值