Log4j2远程执行命令漏洞(CVE-2021-44228)已曝出并发醇了一阵子了,有关如何修复该漏洞各个安全制造商也提供了相应的解决方法,这篇文章内容具体剖析怎样在流量方面鉴别和屏蔽攻击请求以完成精确检验和防护的意义。
Log4j2语法文件格式剖析
要想完成精确检验最先须要了解log4j的lookup如何查询,即${suffix:number}语法。这也是log4j给的一类关系式如何查询,有点儿相近开发语言的变量,suffix部位便是“变量名”,number部位便是“变量变量”。lookup方法是适用嵌入应用的,现阶段已公布的绕开规则具体全是根据lookup方法的嵌入查找去切分关键词进而绕开正则的配对。咱们以${${lower:jnd${lower:i}}:xxx}这一嵌入为例子,跟一下下${suffix:number}的语法剖析过程:随后进入substitute方法,这儿有几个配对标识符的位置,也是后边我们可以绕开运用的点所以。
嵌入解析xml全部的${suffix:number}文件格式字符串数组,交到lookup.Interpolator解决。随后在Interpolator的lookup时会寻找${suffix:number}文件格式字符串数组的suffix和number并对suffix开展全小写字母变换(从而获知没法利用更改大小写的方法对suffix开展关键词绕开)然后把suffix用来和strLookupMap做比较,寻找相应的lookup类。读取如上相应到的类的lookup方法对number做解决。能够看见lower的解决事实上便是toLowerCase了一下下,通过一层一层的嵌入剖析后,解出了咱们的目标关系式:总体目标调度逻辑性沒有很大问题,而要达到对该漏洞的全方位检验,咱们须要了解lookup方法适用对什么suffix的应用。一个是分析除开jndi之外还有哪些方法可以被运用;二是寻找除开lower、upper等方法外还有哪些方法是可以去切分payload特征的