反序列化漏洞篇
提示:所有渗透测试均是在授权情况下进行,漏洞已修复,且已经对敏感信息进行了脱敏处理,本文内容仅供参考学习,切勿模仿。
文章目录
前言
在身份验证,文件读写,数据传输等功能处,在未对反序列化接口做访问控制,未对序列化数据做加密和签名,加密密钥使用硬编码(如Shiro 1.2.4),使用不安全的反序列化框架库(如Fastjson 1.2.24)或函数的情况下,由于序列化数据可被用户控制,攻击者可以精心构造恶意的序列化数据(执行特定代码或命令的数据)传递给应用程序,在应用程序反序列化对象时执行攻击者构造的恶意代码,达到攻击者的目的。
一、反序列化漏洞原理
首先我们需要了解一下序列化和反序列化的含义:
序列化是指Java对象转化为二进制内容,转换的原因就是为了便于网络传输和本地存储。
反序列化的含义是将相应的二进制转换为Java对象。
漏洞成因:当输入的反序列化的数据可以被用户控制,那么攻击者就可通过构造恶意输入,让反序列产生非预期对象,同时执行构造的恶意代码
常用函数:(php反序列化)围绕:serialize()和unserialize()这两个函数展开
常用的魔术函数:
1、_construct() #当一个对象创建时被调用
2、_destruct() #当一个对象被销毁时被调用
3、_tostring() #输出的时候自动调用
4、_sleep() #在对象在被序列化之前运行
5、_wakeup #将在序列化之后立即被调用
二、常见反序列化漏洞
1.shiro(550/721)反序列化漏洞
指纹信息:
请求包中,在Cookie信息中给 rememberMe变量赋任意值,收到返回包的 Set-Cookie 值存在 rememberMe=deleteMe 字段,说明目标使用了Shiro框架。
漏洞原理:
Shiro-550
Apache Shiro框架提供了RememberM

最低0.47元/天 解锁文章
1756

被折叠的 条评论
为什么被折叠?



