Vulnerability Reproduction
未读影响版本2.0<Version<2.14.1
概述Apache Log4j2是一个基于Java的日志记录工具,当前被广泛应用于业务系统开,发,开发者可以利用该工具将程序的输入输出信息进行日志记录。其中log4j2支持lookup功能(查找搜索),这也是一个非常强大的功能,设计之初的目的也是为了方便开发者调用,
漏洞的产生在于依赖会将${}包裹的字符串作为特殊字符来进行循环处理. 例如当开发者想在日志中打印今天的日期,则只需要输出${date:MM-dd-yyyy},此时log4j会将${}中包裹的内容单独处理,将它识别为日期查找,然后将该表达式替换为今天的日期内容输出为“08-22-2022”,这样做就不需要开发者自己去编写查找日期的代码。
表达式除了支持日期,还支持输出系统环境变量等功能,这样极大的方便了开发者。但是安全问题往往就是因为“图方便”引起的,毕竟设计者也是需要在安全性和用户体验之间做个平衡。
其实打印日期,打印系统变量这种对系统而言构不成什么威胁,最重要的原因是log4j还支持JNDI协议。
JNDIJNDI 注入,即 ...