shiro安全框架_漏洞利用及攻击框架

shiro安全框架_漏洞利用及攻击框架一、Shiro漏洞原理ApacheShiro框架提供了记住我的功能(RemeberMe),用户登录成功后会生成经过加密并编码的cookie。cookie的key为RemeberMe,cookie的值是经过对相关信息进行序列化,然后使用aes加密,最后在使用base64编码处理形成的在服务端接收cookie值时,按以下步骤解析:检索RemeberMecookie的值Base64解码使用ACE解密(加密密钥硬编码)进行反序列化操作(未作过滤处理)在调用反序列化的时候未进行任何过滤,导致

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

一、Shiro漏洞原理

Apache Shiro框架提供了记住我的功能(RemeberMe),用户登录成功后会生成经过加密并编码的cookie。

cookie的key为RemeberMe,cookie的值是经过对相关信息进行序列化,然后使用aes加密,最后在使用base64编码处理形成的

在服务端接收cookie值时,按以下步骤解析:

  1. 检索RemeberMe cookie的值
  2. Base 64解码
  3. 使用ACE解密(加密密钥硬编码)
  4. 进行反序列化操作(未作过滤处理)

在调用反序列化的时候未进行任何过滤,导致可以触发远程代码执行漏洞

用户登陆成功后会生成经过加密并编码的cookie,在服务端接收cookie值后,Base64解码–>AES解密–>反序列化。攻击者只要找到AES加密的密钥,就可以构造一个恶意对象,对其进行序列化–>AES加密–>Base64编码,然后将其作为cookie的rememberMe字段发送,Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞

二、Shiro序列化利用条件

由于使用了AES加密,要想成功利用漏洞则需要获取AES的加密密钥,而在shiro1.2.4之前版本中使用的是硬编码,AES加密的密钥默认在代码里。其默认密钥的base64编码后的值 kPH+bIxk5D2deZiIxcaaaA== ,这里就可以通过构造恶意的序列化对象进行编码,加密,然后作为cookie加密发送,服务端接收后会解密并触发反序列化漏洞。

目前已经更新了很多版本,官方通过去掉硬编码的密钥,使其每次生成一个密钥来解决该漏洞。但是,目前一些开源系统、教程范例代码都使用固定的编码,也有很多开源项目内部集成了shiro并二次开发,可能会重现低版本shiro的默认固定密钥的风险。用户如果不对密钥进行修改,即使升级shiro版本,也依旧存在固定密钥的风险。这里可以通过搜索引擎和github来收集密钥,提高漏洞检测和利用的成功率。

三、Shiro框架识别

请求包的cookie中存在rememberMe字段。
返回包中存在set-Cookie:remeberMe=deleteMe。
请求包中存在rememberMe=x时,响应包中存在rememberMe=deleteMe。(有时候服务器不会主动返回remeberMe=deleteMe,直接发包即可,将Cookie内容改为remember Me=1,若相应包有rememberMe=deleteMe,则基本可以确定网站是apache shiro搭建的。)
URL中有shiro字样

四、Shiro漏洞汇总

CVE-2020-17523
CVE-2020-17510
CVE-2020-13933
CVE-2020-11989#Apache Shiro身份验证绕过漏洞
CVE-2016-6802#Shiro Padding Oracle Attack
CVE-2016-4437#Shiro rememberMe反序列化漏洞

开源的burp shiro检测插件:
https://github.com/pmiaowu/BurpShiroPassiveScan
https://github.com/potats0/shiroPoc
shiro漏洞利用工具:
https://github.com/j1anFen/shiro_attack
https://github.com/fupinglee/ShiroScan

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196069.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • R语言作图——density plot(密度图)

    R语言作图——density plot(密度图)原创黄小仙上次分享了小提琴曲线(violinplot)的作图方法,今天小仙同学给大家介绍一下如何用R画出漂亮的密度图(densityplot)。Step1.绘图数据的准备首先还是要把你想要绘图的数据调整成R语言可以识别的格式excel中保存成csv格式。数据的格式如下图:一列表示一种变量,第一行是列名Step2.绘图数据的读取data<-read.csv(“your…

    2022年10月16日
    0
  • easyui,layui和 vue.js的区别

    easyui,layui和 vue.js的区别easyui,layui和 vue.js的区别

    2022年4月23日
    60
  • spring boot的自动配置原理_springboot的工作原理

    spring boot的自动配置原理_springboot的工作原理深入Springboot启动流程+自动配置原理?写在前面?相关常见面试题Springboot启动入口@SpringBootConfiguration解读@ComponentScan解读@EnableAutoConfiguration解读(重点)@AutoConfigurationPackage解读@Import({AutoConfigurationImportSelector.class})解读(重点)?写在前面?自从SpringBoot问世以来,开发界可以说是乱了套。我还记得我朋友几年前去参加

    2022年8月20日
    3
  • sql中的declare_如何声明变量

    sql中的declare_如何声明变量在sql语句中添加变量。declare @local_variabledata_type声明时需要指定变量的类型,可以使用set和select对变量进行赋值,在sql语句中就可以使用@local_variable来调用变量 声明中可以提供值,否则声明之后所有变量将初始化为NULL。 例如:declare@idint

    2022年8月20日
    6
  • 单片机红外传感器_基于51单片机的声音传感器

    单片机红外传感器_基于51单片机的声音传感器一、背景介绍我们工作久了,久坐导致的毛病就显现出来了,腰酸背痛颈椎疼,最近看到利用番茄钟工作法挺好,工作25分钟,休息5分钟,既能调整工作节奏,避免精力过分消耗,也能避免久坐导致的身体问题。我刚开始使用闹钟做提醒,后来尝试番茄钟软件,但是都要手动去操作手机,拿起手机看到信息,然后就会去处理手机上的事情了,起不到作用…直到有一天收拾东西看到了我大学期间基于51单片机做的一个电子设计,激起了我的灵感,开始了基于51单片机的自动番茄钟,久坐提醒神器的设计和制作。整体方案硬件部分继承了大学时焊接的电路板,更

    2022年10月1日
    0
  • [夜记] — 通州

    [夜记] — 通州

    2021年7月2日
    91

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号