反序列化实验分享

本文介绍了如何通过反序列化实验删除特定账户的文件,使用ysoserial工具生成包含恶意代码的序列化对象,并通过Cookie传递执行。实验展示了序列化和反序列化的概念及其在网络通信中的作用,强调了安全风险,如可控序列化内容可能导致权限提升。
摘要由CSDN通过智能技术生成

反序列化实验分享

简单分享一个关于反序列化实验的过程:
1、实验描述:
首先这个实验是要求登录自己的账户wiener,然后去删除carlos账户下的morale.txt文件
其中需要用到第三方的一个工具叫做“ysoserial”,它可以生成一个Base64编码的序列化对象,里面包含我们要执行的payload
工具可以在GitHub下载到:https://github.com/angelwhu/ysoserial
在这里插入图片描述2、实验开始/
首先我们使用提供的账户名密码wiener:peter进行登录,然后我们将获取到一个Cookie值,此时抓包可以看到;
在这里插入图片描述
下面我们将利用Cookie值去执行我们的恶意代码:
rm /home/carlos/morale.txt,意思是删除carlos账户主目录下的morale.txt文件
然后就需要利用ysoserial工具,生成包含该恶意代码的序列化对象,再将此对象传递到网站服务器
命令:java -jar ysoserial.jar CommonsCollections4 ‘rm /home/carlos/morala.txt’ | base64
在这里插入图片描述
此时工具已经生成了我们想要的结果,将其复制下来,并进行URL编码
接下来回到抓包页面,使用我们刚刚得到的值,取代请求包中原有的Cookie值
在这里插入图片描述
点击发送该请求,响应结果显示/home/carlos/下的morala.txt文件已被删除,该Lab得到解决。

3、实验总结
序列化和反序列化就是对数据进行相反处理的一个过程。
这就好比网络通信中数据包的处理过程,应用层产生的数据为了能够在网络中传递,首先需要有一个封装的过程:
数据–>分段–>数据包–>数据帧–>比特流,这个时候才可以通过介质(eg:网线)进行传递。
当比特流传递到对端时,同样有一个解封装的过程
比特流–>数据帧–>数据包–>数据重组–>数据,此时应用层才可以识别数据的内容。

同样的,序列化就是将一个对象转化成字节序列的过程,而反序列化就是将字节序列再恢复成对象的过程。
举例:
假如说有一个对象user,它设置了两个属性name=“OldNine”(用户名)和admin=false(是否是管理员权限)
当它被序列化的时候应该是这个样子:O:4:“user”:2:{s:4:“name”: s:7:“OldNine”;s:5:“admin”: b:0;}
大致意思从表面应该就能猜出来,O表示一个对象,4个字符user,2个属性在大括号里面
分别是,s表示字符串,4个字符name,它的值为7个字符的字符串OldNine;b表示布尔类型,0代表False,1代表True
而反序列化就是它的逆过程,将其转化成对象user,包括它的属性和值。
那么这有什么用呢?
假使说我们能够控制序列化中的内容且有效
上面所举的例子中,用户OldNine的admin属性是False,也就表示它是没有管理员权限的
如果说我们能够控制它的内容,将s:5:“admin”: b:0; 改为s:5:“admin”: b:1;
那么此时admin属性将变为True,当数据传到服务端时再将其反序列化之后,该用户也就有了管理员的权限
是不是很哇塞!
今天分享的小实验也是同样的道理,通过ysoserial工具将我们的payload生成一个经过base64编码的序列化对象
通过Cookie值将其传递到目标网站服务器,在进行反序列化还原之后执行我们的恶意代码。

								   *滴水之所以可以穿石,是因为它贵在坚持*
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值