Log4j

Log4j漏洞由来

为了输出日志时能够方便地输出任意位置的java对象,Log4j2引入了一个叫Lookup的统一接口。这个接口允许在写日志的时候,按照具体的实现逻辑去查找对象的位置,并输出对象的内容。这里的对象通常在内存中,但由于java支持对象的序列化/反序列化,它也可以存储在硬盘文件里,甚至是远程服务器上。

我们提到的JNDI就是对Lookup接口的一种实现。其本身也是一个接口,提供了命名关键字到对象的映射目录,允许开发者提供一个名称,即可获取到对象的内容。LDAP,即轻量级目录访问协议,是JNDI的一种底层实现,它可以让我们方便的查询分布式数据库。既然是分布式的,LDAP允许从远程服务器加载对象。而这里加载对象时使用的不是一般的反序列化方法,而是通过「命名引用」功能,支持直接从远程下载class文件并加载对象。

于是,Log4j2中就暗含了注入漏洞:允许传入参数解析为LDAP协议,从远程服务器下载class文件并执行。这个功能本来是为了方便开发,使java对象位置对上层应用透明,却不料酿成大祸。

Log4j漏洞分析

在受影响版本中,攻击者可以利用该漏洞在未授权的情况下,构造恶意参数以远程方式在目标服务器上执行恶意代码,从而获取目标服务器的控制权限。

该漏洞的POC在11月底被安全研究人员发布,12月8日网络上出现该漏洞POC。安天CERT分析人员对该漏洞以及已公开的POC进行分析,在Log4j 2组件的版本低于2.15 RC2的情况下均能成功执行任意代码,通过POC可以成功获得受害服务器返回的连接。

原文链接:https://blog.csdn.net/qq_51302564/article/details/121963049

posted on   Mario24678  阅读(86)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示