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 2023-03-06 20:25 Mario24678 阅读(86) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?