反序列化漏洞(一)Shiro漏洞CVE-2016-4437复现

★★免责声明★★
文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与学习之用,读者将信息做其他用途,由Ta承担全部法律及连带责任,文章作者不承担任何法律及连带责任。

1、前言

春节后第一篇,祝大家龙年一切顺利,开始调整调整,再过几天就上班啦!我春节期间休息几天没有更新,但跑步不间断,每天室内慢跑60分钟+,所以没有长胖。你春节期间有坚持运动吗?

接下来会分享反序列化几个常见漏洞(shiro、weblogic和fastjson):原理和复现,可能会有3~4个篇幅,具体以实际为准。

2、序列化和反序列化

序列化就是把对象转换成字节流,便于保存在内存、文件、数据库中,保证对象的完整性和可传递性;反序列化即逆过程,由字节流还原成对象。 根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。在PHP中序列化和反序列化对应的函数分别为serialize()和unserialize()。

常见序列化出现场景:
1.远程和进程间通信(RPC/IPC)
2.连线协议、 Web服务、消息代理
3.缓存/持久性存储区
4.数据库、缓存服务器、文件系统
5.HTTP cookie、 HTML表单参数、 API身份验证令牌

3、反序列化漏洞原理

当程序在进行反序列化时,会自动调用一些函数,以PHP为例有__wakeup(),__destruct()等函数, Java中有readObject()方法等,但是如果传入函数的参数可以被用户控制的话,用户可以输入一些恶意代码到函数中,从而导致反序列化漏洞。

常见危害:
1.远程代码执行,如:system(‘whoami’)等
2.重放攻击
3.注入
4.特权提升

4、Shiro反序列化漏洞原理

AES加密的密钥Key被硬编码在代码里,由于Shiro源码开源,意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化、AES加密、 base64编码后,作为cookie的rememberMe字段发送。 Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。

漏洞影响版本
Apache Shiro <=1.2.4

4.1、解析步骤

1.检索RememberMe cookie 的值;
2.Base 64解码;
3.使用AES解密(加密密钥硬编码);
4.进行反序列化操作,生成用户登录信息对象(未作过滤处理),在调用反序列化时未进行任何过滤,导致可以触发远程代码执行漏洞。

4.2、漏洞特征

返回包中存在 rememberMe=deleteMe 字段

5、CVE-2016-4437漏洞复现

docker环境搭建详见《kali系统安装docker和部署vulhub服务》

5.1、启动靶场环境
# 先切到对应目录
cd /home/kali/vulhub-master/shiro/CVE-2016-4437# 开启靶场
docker-compose up -d# 查看靶场启动情况
docker-compose ps

在这里插入图片描述

5.2、访问靶场

访问:http://your-ip:8080

在这里插入图片描述

5.3、查看漏洞说明

在靶场启动同一个目录有一个README.md文档,说明漏洞原理,测试账号:admin/vulhub和漏洞重现步骤说明。

在这里插入图片描述

5.4、确定注入点

使用Burp suite抓包,未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包set-Cookie里也没有deleteMe字段。

登陆失败或成功,不管有没有勾选RememberMe字段,返回包都会有rememberMe=deleteMe字段。但是如果不勾选RememberMe字段,登录成功后所有请求中Cookie都不会有rememberMe字段

5.4.1、未登录时

在这里插入图片描述

5.4.2、登录失败,无勾选

在这里插入图片描述

5.4.3、登录成功,勾选,访问其他页面

在这里插入图片描述

5.5、利用工具
5.5.1、shiro_attack_2.2

在这里插入图片描述

爆破链利用,结合burp suite工具代理使用。
在这里插入图片描述
在这里插入图片描述

命令执行

在这里插入图片描述

6、下期内容预告

下期内容继续分享Shiro另外两个漏洞复现:CVE-2019-12422和CVE-2020-1957,敬请关注我的公众号,持续更新中…

7、资料获取

如果需要Shiro漏洞利用工具,请关注公众号:大象只为你,后台回复:shiro漏洞。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/469042.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第二十八回 施恩重霸孟州道 武松醉打蒋门神-可用于生产环境的Python Web框架:Pyramid

施恩给武松讲了他的烦心事&#xff0c;他在快活林的酒肉店被蒋门神霸占了。希望武松能帮他出气。施恩的父亲也从屏风后走出来&#xff0c;让施恩拜武松为兄长。 武松要去打蒋门神&#xff0c;跟施恩约好了“无三不过望”&#xff0c;望子就是酒旗&#xff0c;意思看到酒旗就要…

中国电子学会2023年12月份青少年软件编程Scratch图形化等级考试试卷一级真题(含答案)

2023-12 Scratch一级真题 分数&#xff1a;100 题数&#xff1a;37 测试时长&#xff1a;60min 一、单选题(共25题&#xff0c;共50分) 1.观察下列每个圆形中的四个数&#xff0c;找出规律&#xff0c;在括号里填上适当的数&#xff1f;&#xff08;C&#xff09;&#xf…

企业架构师的人格特质

L - Learning 持续学习的能力A - Abstracting 概念抽象的能力C1 - Connecting 联结事物的能力C2 - Compromising 平衡折衷的能力D - Decisioning 果断决策的能力 参考文章的链接

HGAME 2024 WEEK2 Web方向题解 全

---------【WEEK-2】--------- What the cow say? 题目描述&#xff1a;the cow want to tell you something 注意title&#xff0c;Python的flask漏洞可多呢 版本310 先测一下SSTI 正常情况下 SSTI测试 变量渲染测试&#xff0c;被waf了&#xff0c;说明方向对了 单单过滤…

js toFixed函数精度问题

在使用toFixed函数会出现精度缺失问题&#xff0c;如下图 在2.55与1.45保留1位小数时&#xff0c;正常情况下应该为2.6与1.5&#xff0c;而toFixed函数得出的是2.5与1.4。这和计算机中小数存储有关。 小数运算不精确其实与下面三方面有关&#xff1a; 1、存储 2、运算 3、显示…

starknet之 class_hash

文章目录 问题背景什么是Class Hash问题背景 部署合约报错:ReferenceError: Buffer is not defined 什么是Class Hash 官方: https://book.starknet.io/ch04-03-01-deploy-standard-account.html?highlight=class%20hash#finding-the-class-hash 要部署智能合约,您需要在…

栈和队列循环队列(C/C++)

本篇将用数组实现栈、链表实现队列以及使用数组实现循环队列&#xff0c;然后实现了用栈实现队列和用队列实现栈以及一些其他的栈和队列的习题&#xff0c;加深队栈和队列的理解。 若只看对应所需&#xff0c;可直接看文章旁的目录。 1.栈 1.1栈的概念及结构 栈&#xff1a;一…

ros自定义msg记录

文章目录 自定义msg1. 定义msg文件2. 修改 package.xml3. 修改 CMakeLists.txt4. message_publisher.py5. message_subscriber.py6. 运行 catkin build 测试 自定义msg ros 版本&#xff1a;kinetic 自定义test包的文件结构如下 |-- test | |-- CMakeLists.txt | |-- msg…

拓扑排序入门

文章目录 写在前面一些概念算法步骤字典序最大/最小的拓扑序列&#xff1f;模板例题3704. 排队家谱树奖金P1983 [NOIP2013 普及组] 车站分级1639. 拓扑顺序 写在前面 昨晚cf div3的F就是一道基本上可以说板子的拓扑排序的题目&#xff0c;没有做出来感觉图论很早之前就看了&am…

九、OpenCV自带colormap

项目功能实现&#xff1a;每隔1500ms轮流自动播放不同风格图像显示&#xff0c;按下Esc键退出 按照之前的博文结构来&#xff0c;这里就不在赘述了 一、头文件 colormap.h #pragma once #include<opencv2/opencv.hpp> using namespace cv;class ColorMap { public:vo…

Java+SpringBoot构建智能捐赠管理平台

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

在Meteor Lake平台上使用NPU进行AI推理加速

在Meteor Lake平台上&#xff0c;英特尔通过神经处理单元 (NPU) 将人工智能直接融入芯片中&#xff0c;实现桌面电脑平台的AI推理功能。神经处理单元 (NPU) 是一种专用人工智能引擎&#xff0c;专为运行持续的人工智能推理工作负载而设计。与即将推出的支持深度人工智能集成的 …