首页 > 其他分享 >WEB攻击模式库之反序列化学习总结

WEB攻击模式库之反序列化学习总结

时间:2023-03-15 14:57:45浏览次数:33  
标签:WEB 调用 文件 对象 黑客 应用 库之反 序列化

1.1.序列化反序列化是什么(what) 

  • 序列化:对象序列化的最主要的用处就是在传递和保存对象的时候,保证对象的完整性和可传递性。序列化是把对象转换成有序字节流,以便在网络上传输或者保存在本地文件中。核心作用是对象状态的保存与重建。

  • 反序列化:客户端从文件中或网络上获得序列化后的对象字节流,根据字节流中所保存的对象状态及描述信息,通过反序列化重建对象。

1.2.为什么需要序列化,反序列化(why)

  一:对象序列化可以实现分布式对象。

  主要应用例如:RMI(即远程调用Remote Method Invocation)要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时一样。

  二:对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。

  可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象可能得到整个对象序列。

  三:序列化可以将内存中的类写入文件或数据库中。

  比如:将某个类序列化后存为文件,下次读取时只需将文件中的数据反序列化就可以将原先的类还原到内存中。也可以将类序列化为流数据进行传输。

  总的来说就是将一个已经实例化的类转成文件存储,下次需要实例化的时候只要反序列化即可将类实例化到内存中并保留序列化时类中的所有变量和状态。

  四:对象、文件、数据,有许多不同的格式,很难统一传输和保存。

  序列化以后就都是字节流了,无论原来是什么东西,都能变成一样的东西,就可以进行通用的格式传输或保存,传输结束以后,要再次使用,就进行反序列化还原,这样对象还是对象,文件还是文件。

1.3. 序列化反序列化的如何实现(how)

   marshal/unmarshal  encode/decode

2.1. 反序列化攻击如何攻击的(what)

  简单来说

  1. 黑客构造一个恶意的调用链(专业术语为 POP,Property Oriented Programming),并将其序列化成数据,然后发送给应用;
  2. 应用接收数据。大部分应用都有接收外部输入的地方,比如各种 HTTP接口。而这个输入的数据就有可能是序列化数据;
  3. 应用进行反序列操作。收到数据后,应用尝试将数据构造成对象;
  4. 应用在反序列化过程中,会调用黑客构造的调用链,使得应用会执行黑客的任意命令。

  

  在这个反序列化的过程中,应用为什么会执行黑客构造的调用链呢?这是因为,反序列化的过程其实就是一个数据到对象的过程。在这个过程中,应用必须根据数据源去调用一些默认方法(比如构造函数和 Getter/Setter)。

  除了这些方法,反序列化的过程中,还会涉及一些接口类或者基类(简单的如:Map、List 和 Object)。应用也必须根据数据源,去判断选择哪一个具体的接口实现类。

  也就是说,黑客可以控制反序列化过程中,应用要调用的接口实现类的默认方法。通过对不同接口类的默认方法进行组合,黑客就可以控制反序列化的调用过程,实现执行任意命令的功能。

   

2.2.反序列化攻击如何防范(how)

  

  序列化和反序列化的操作产生了一些警惕。那你可能要问了,既然反序列化漏洞危害这么大,我们能不能直接剔除它们呢?显然是不可能的,尤其是 JSON,作为目前最热门的跨平台数据交换格式之一,其易用性是显而易见的,你不可能因为这些还没发生的危害就剔除它们。

  因此,我们要采取一些有效的手段,在把反序列化操作的优势发挥出来的同时,去避免反序列化漏洞的出现。我们来看 3 种具体的防护方法:认证、限制类和 RASP 检测。 

    1.认证,通过签名加密等对源身份进行校验

  2.黑名单列表,白名单校验

  3.依赖第三方工具

 

标签:WEB,调用,文件,对象,黑客,应用,库之反,序列化
From: https://www.cnblogs.com/gongxianjin/p/17218396.html

相关文章

  • LoadRunner——web网页诊断图(菜单:Graphs)(十五)
    7.1、组成:Web页面诊断图页面组件细化图页面组件细化图(随时间)页面下载时间细化图页面下载时间细化图(随时间)第一次缓冲时间细化图第一次缓冲时间细化图(随时间)【web......
  • 你需要知道的webpack高频面试题
    谈谈你对webpack的看法webpack是一个模块打包工具,可以使用它管理项目中的模块依赖,并编译输出模块所需的静态文件。它可以很好地管理、打包开发中所用到的HTML,CSS,JavaScr......
  • 一文彻底读懂webpack常用配置
    开发环境constwebpack=require("webpack");constpath=require('path')module.exports={//entry:{//a:'./src/0706/a.js',//c:'./......
  • JAVA设备对接中,字节协议序列化的简单方式
    一般来说,java在和设备进行对接时都会使用私有协议或自定义协议,在序列化这些协议时会相当的繁琐,而且比较注重细节。 基于之前的对接经验,我整理并完成了一套序列化框架。......
  • TinyWebServer
    1.一文读懂社长的TinyWebServer为提高效率,我们将在这部分通过线程池来实现并发(多线程并发),为每个就绪的文件描述符分配一个逻辑单元(线程)来处理。Linux下有三种IO复用方式:e......
  • web测试 bug定位(待补充)
    1、前置条件1.1、需要的知识熟透系统业务、团队成员情况熟悉使用F12或抓包工具了解HTTP/HTTPS协议了解系统的架构,数据走向1.2、定位前的操作(1)保存bug产生的记录(2)排......
  • webRTC
    概念webRTC(webReal-Timecommunications)是一项实时通讯技术,是一个可以用在视频聊天、音频聊天或P2P文件分享等WebApp中的APIWebRTC主要由一下几个部分组成:getUserMe......
  • Web前端杂乱知识复习
    OSIOSI是OpenSystemInterconnect的缩写,意为开放式系统互联。其各个层次的划分遵循下列原则:​(1)同一层中的各网络节点都有相同的层次结构,具有同样的功能。​(2)同......
  • 基于Web的图书管理系统设计与实现(附源码下载地址)
    @目录01系统简述02开发工具及相关技术2.1Java技术2.2HTML、css、javascript技术2.3Servlet技术2.4Eclipse开发工具2.5MySql数据库03系统功能描述04工程结构及其说......
  • JavaWeb-QQZone项目的业务需求、数据库设计等内容
    资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战),本人才疏学浅,记录笔记以供日后回顾由于是多个视频内容混合在一起,因此只放了第一个链接本文参考价值不高,自我记录......