Log4j2漏洞排查方法

由于最近曝出来的Log4j2远程执行漏洞过于严重,公司内部也积极展开自查,笔者手头项目比较多,排查起来费时费力,于是总结了以下方法来加快排查速度。

1、最直观方式

  • 1、使用pom分析插件,如IDEA上的Dependency Analyzer,打开pom文件后,切换到Dependency Analyzer标签,查看log4j-core的版本号;
    Log4j2漏洞排查方法
  • 2、查看lib下jar包的版本;如IDEA中;Log4j2漏洞排查方法
    Log4j2漏洞排查方法

以上方法需要每个项目都打开去验证,虽然直观,但是麻烦;于是想到用以下方法,先去服务器上排查,然后再根据结果,打开需要的项目进行修复。

2、服务器上排查

  • 1、直接查看jar包或war包内的第三方库。
	jar -tf jar包或者war包|grep 'log4j.*jar$'

这句话是用来检查jar包或者war包下有没有log4j的jar包,检查结果如图
Log4j2漏洞排查方法

  • 2、解压后的war项目目录或者lib单独打包放在项目外边的。
	find . -name log4j*.jar

使用linux的find命令,直接查找相关的jar包。

  • 3、打包到项目中的三方引用包是class而不是jar包(相当于是将第三方的jar作为本地项目使用了)
    这种包解包结果类似下图:
    Log4j2漏洞排查方法
    所以使用如下命令,查找特定类文件
	jar -tf jar包或者war包|grep 'log4j'|grep 'Jndi'

比如将 Jndi 修改为 Deny,则会出现如下结果:
Log4j2漏洞排查方法

此处修改为过滤 Deny 只为做演示结果,要排查Log4j2的漏洞文件,还是要过滤 Jndi。

特殊说明: 由于这种方式没有办法看到log4j的版本号,所以升过级的项目和未升过级的项目都可以查到 JndiLookup.class 文件,此时需要打开项目做进一步的确认。

上一篇:Java日志框架SLF4J和log4j以及logback的联系和区别


下一篇:Druid的使用