近日, Apache Log4j2 被爆存在远程代码执行漏洞,该漏洞一旦被攻击者利用会造成严重 危害。Apache Log4j2 是一款开源的 Java 日志记录工具,该日志框架被大量用于业务系统 开发。 该漏洞的触发点在于利用 org.apache.logging.log4j.Logger 进行 log 或 error 等记录操作时 未对日志 message 信息进行检查从而导致漏洞发生。 影响版本: 目前影响版本是一直到最新版本rc2 漏洞分析: 漏洞触发的调用如下图: 在进行Logger.log()日志记录时会经过logifEnabled()方法进行判断,返回为true会继续进行log工作。 这个漏洞触发其实是要按照log触发等级判断然后才能触发漏洞,该处level.FATAL,等级为100,返回true才能进行logMessage操作。所以当等级高于100时就无法触发该漏洞,比如WARN、INFO、DEBUG等基本都设置为200,无法触发该漏洞。 在org.apache.logging.log4j.core.pattern.MessagePatternConverter的format()方法中,对log的message event进行处理,取出${}中的数据进行lookup()操作。 org.apache.logging.log4j.core.lookup.interpolator的lookup方法()有很多处理event的途径,包括jndi、date、Java、main等 当构造的event的prefix为jndi时,通过lookup方法触发jndi漏洞利用,所以大家看到的利用方式跟fatsjson是差不多的。
大佬,我来了