InsecureDeserialization(不安全的反序列化)

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

什么是反序列化?

有些时候我们需要把应用程序中的数据以另一种形式进行表达,以便于将数据存储起来,并在未来某个时间点再次使用,或者便于通过网络传输给接收方。这一过程我们把它叫做序列化。典型的例子是,用户数据被序列化后存储到数据库中,另一个例子是在Stateless架构下,用户登陆后的身份数据被序列化存储到了浏览器中。

在这里插入图片描述
反序列化和序列化是两个正好相反的过程。当我们要再次使用这些数据的时候,应用程序读取序列化之后的数据,并将其恢复成应用程序中的数据。例如服务器端从Redis中读出一个键值对,其内容是JSON格式的字符串,代表了某个用户的个人资料,并将其恢复成应用程序可使用的数据。
反序列化有什么安全问题?
尽管反序列化最严重可导致远程代码执行(RCE,Remote Code Execution),但最常见的反序列化安全问题却是通过修改序列化之后的数据字段,从而进行提权或越权操作。
举例来说,服务器端为了能快速横向扩展而被设计成了后端无服务状态架构,这也就意味着用户登陆后,其身份信息(例如用户ID,姓名,角色,登陆时间戳等)被保存到了浏览器cookie当中,在后续的请求里将会被自动发往服务器。
在这里插入图片描述
图:用户登陆后,服务器将用户身份信息存储在浏览器cookie中

存储于cookie中的这份数据的格式是应用程序自定义的,但攻击者通过探索尝试后发现,修改其中的某个字段就能将用户从普通用户修改为管理员。
存储于cookie中的原始数据:
Cookie: 3844998|AliceM|y|27|NU|active|null|201809
经过修改后的数据
Cookie: 3844998|Alice

代码审计(Java)——WebGoat_InsecureDeserialization 阅读详情

相关推荐

安全的反序化基础原理(Insecure deserialization)

安全的反序化 文章目录安全的反序化pikachu123 pikachu 1 class S{ var $test = "pikachu"; function __construct(){ echo $this->test; } } $html=''; if(isset($_POST['o'])){ $s = $_POST['o']; if(!@$unser = unserialize($s)){ $html.="<p&g

飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘飘 1285

Web Security 之 Insecure deserialization

序列化是将复杂的数据结构(如对象及其字段)转换为“更扁平”的格式的过程,该格式的数据可以作为字节流序列发送和接收。将复杂数据写入进程间内存、文件或数据库发送复杂数据,例如,通过网络或API调用,在应用程序的同组件之间传递复杂数据关键的是,当序列化一个对象时,其状态也将保持变。换句话说,对象的属性及其赋值都会被保留。安全反序列化是指用户可控制的数据被网站反序列化。这会使攻击者能够操纵序列化的对象,以便将有害数据传递到应用程序代码中。甚至可以用完全同类的对象替换序列化对象。

阿道夫的博客 750

Deserialization反序列化漏洞

详细介绍反序列化安全漏洞的知识笔记。绝佳的入门教程+配套靶场

Eason_LYC安全白帽子的成长博客 3459

OWASP TOP10系列之TOP8 # A8 安全反序列化

OWASP TOP10系列之#TOP8# A8-Insecure Deserialization 安全反序列化 文章目录OWASP TOP10系列之#TOP8# A8-Insecure Deserialization 安全反序列化前言一、Insecure Deserialization 安全反序列化是什么?什么情况有反序列化安全问题怎么防御反序列化攻击?其他防御措施误区总结 前言 一、Insecure Deserialization 安全反序列化是什么? 有些时候我们需要把应用程序中的数据以

weixin_43125873的博客 680

webgoat-Insecure Deserialization安全的序列化

序列化是将某些对象转换为以后可以恢复的数据格式的过程。人们经常序列化对象,以便将它们保存到存储中,或作为通信的一部分发送。反序列化是从某种格式获取结构化数据并将其重建为对象的过程的逆过程。如今,最流行的序列化数据格式是 JSON。在此之前,它是 XML。a:4:{i:0;i:132;i:1;s:7:“马洛里”;i:2;s:4:“用户”;i:3;

seanyang_的博客 1333

OWASP top10(OWASP十大应用安全风险)之A8 安全反序列化Insecure Deserialization

TOP8安全反序列化Insecure Deserialization) 注意:OWASP Top 10指出,此安全风险是由行业调查添加的,并非基于可量化的数据研究。 每个Web开发人员都需要使攻击者/安全研究人员尝试使用与应用程序交互的所有内容(从URL到序列化对象)的事实,使和平。 在计算机科学中,对象是数据结构。换句话说,一种构造数据的方式。为了更容易理解一些关键概念: 序列化的过程...

qq_39682037的博客 3381

WebGoat2026年版本(全10个模块另附其他模块)通关教程

本文简要介绍了WebGoat安全测试平台的部署和使用方法。主要内容包括:1)环境配置(Java23+Maven3.9.11)和启动步骤;2)HTTP基础任务,通过BurpSuite抓包分析POST请求;3)HTTP代理任务,要求修改请求方法和添加特定头信息;4)开发者工具任务,使用控制台获取随机数和网络请求中的数值;5)CIA三要素测验题。文章提供了具体操作截图和Python请求示例,帮助读者完成各项安全测试任务,适合作为Web应用安全测试的实操参考手册。

csdnkazusa的博客 1202

实习Day24

2019.7.29 实习第二十四天 早上继续看了一下websocket脚本,随机化的token让我很没有头绪,估计要找找生成的算法,需要的信息应该都有 收集了一些通告出来的漏洞准备了解一下原理和EXP(取自qianxin,huawei,tencent安全通告页面) CVE-2018-8581 SSRF CVE-2019-2725 Weblogic反序列化 CVE-2019-21763 R...

gw_csdn的博客 395

【Academy】反序列化漏洞Insecure deserialization

序列化是将复杂的数据结构(如对象及其字段)转换为可以作为顺序字节流发送和接收的“更丝滑”格式的过程。将复杂数据写入进程间内存、文件或数据库例如,通过网络、在应用程序的同组件之间或在API调用中发送复杂数据至关重要的是,当序列化一个对象时,它的状态也会被持久化。换句话说,对象的属性及其指定的值都会被保留。安全反序列化是指用户可控的数据被网站认证。这可能使攻击者能够操纵序列化对象,以便将有害数据传递到应用程序代码中。甚至可以用完全同类的对象替换序列化对象。

D-river博客 1481

关于Insecure Deserialization安全反序列化

安全反序列化,owasp top 10,web安全

二狗学网安 3682

【序列化】UNSAFE_DESERIALIZATION 安全反序列化反序列化漏洞

Unsafe Deserialization 进行代码检查时,Coverity工具在进行json转换时,报Unsafe Deserialization错误,字面意思是安全反序列化,根本原因就是反序列化会有漏洞导致的。 看完下文反序列化漏洞的原理后,我们就知道该如何解决这个问题了。 反序列化漏洞 ...

m0_45406092的博客 7657

对象的串行化(Serialization)和反串行化(deserialization)

串行化(serialization)是指将一个对象的当前状态转换成字节流(a stream of bytes)的过程,而反串行化(deserialization)则指串行化过程的逆过程,将字节流转换成一个对象,[color=red]打回原形[/color]。 一、串行化的意义: 1:解决Web应用程序的无状态弊端 一旦将某一对象串行化,得到的字节可以存储在文件、数据库,或内存中—— 只要是可...

xinking520的专栏 1647

理解Java里面的序列化和反序列化

(一)什么是序列化和反序列化 序列化(serialization)和反序列化deserialization)是将对象转化成字节数组以方便保存或者用于网络传输,这个对象可以是一个图片,一个字符串,一个class等等,常见序列化格式有字节数组,json格式,xml格式,更加高效的有google开源的Protocol Buffers,以及Apache Avro。 (二)为什么需要序...

三劫散仙 274

什么是序列化?什么是反序列化

在 Java 中,

m0_69529796的博客 1403

WebGoat8.2.2-A8安全反序列化

1、概念 使用反序列化在各编程语言中略有同,如Java、PHP、Python、Ruby、C/C++等等,但在关键概念上是一样的 序列化:将(内存中的)对象转化成数据格式,以便存储或传输 反序列化:即序列化的反过程,从某种格式的数据中构建对象 如今最受欢迎的序列化数据格式是JSON,而在这之前是XML,只有数据是序列化的,而代码本身是 2、Native Serialization-本地序列化/客制序列化 一些编程语言提供了自己的序列化功能,所使用的数据格式比一般的JSON或XML拥有更多的特性和功能,甚至

weixin_45032957的博客 785

Java 反序列化

反序列化基础 Java 的序列化(Serialization)和反序列化Deserialization)是将对象的状态转换为字节流并恢复的过程。这个过程使对象可以保存到文件、通过网络传输或保存到数据库中,并在稍后恢复成对象。 序列化(Serialization):将 Java 对象的状态转换为字节流的过程。这使得对象可以保存到文件、发送到其他 JVM 甚至通过网络传输。 反序列化Deserialization):将字节流转换回 Java 对象的过程。这允许恢复先前序列化的对象状态。 序列化条件 要使

sky123博客 3806

WebGoat JAVA反序列化漏洞分析复现

该方法代码如下,首先第6行进行传参token,跟到第10行,在进行反序列化对象创建的时候,进行了base64解码并返回到ois变量。但根据上面的代码分析也得知需要在提交之后,会进行base64解码,所以需要提前加密,但是像这种序列化数据直接copy出来并加密的话。为此写了加密的小工具。进行简单分析一波之后,使用ysoserial生成序列化的payload,这里的话做过多讲解,具体使用应该大家都会。当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

leah126的博客 1279

Serialization和Deserialization

Serialization和Deserialization Java提供了一种叫做对象序列化的机制,他把对象表示成一连串的字节,里面包含了对象的数据,对象的类型信息,对象内部的数据的类型信息等等。因此,序列化可以看成是为了把对象存储在磁盘上或者是从磁盘上读出来并重建对象而把对象扁平化的一种方式。反序列化是把对象从扁平状态转化成活动对象的相反的步骤。 ...

weixin_41924879的博客 1669
上一篇: mac安装virtualenv
下一篇: SSRF(Server-Side Request Forgery):服务器端请求伪造
Shannonnnn
博客等级 码龄10年 241粉丝 69原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值