shiro的一点总结

本文来说说之前有一篇面试中提到的shiro反序列化问题。

分为以下几部分。

  1. 问题点的产生及原理
  2. AES加密
  3. 问题点的利用扩大
  4. 问题点自动化利用

 

  1. 什么是Shiro以及Shiro的作用

Shiro是一款java的安全框架。作用与会话部分,提供身份验证,会话管理,数据加密,用户认证功能。

  1. 问题点的产生及原理

1.1 漏洞产生点

漏洞的产生点在于shiroremeberMe功能处,该功能提供了cookie的加密序列化存储,默认使用AES算法加密的方式。

1.2 Shiro反序列化的产生

在存储cookie的过车各种,由于AES算法的密钥为非保密密钥(包括可猜测,硬编码等问题)导致,反序列化漏洞。

  1. AES加密

先来说说什么是AES算法。

概念是对称加密,包含四步操作AES加密算法涉及4种操作:字节替代SubBytes)、行移位ShiftRows)、列混淆MixColumns)和轮密钥加AddRoundKey)。

解密就是进行逆操作。

由于采用的是对称加密,所以拥有密钥的情况下,内容可知。

(详解:https://www.cnblogs.com/luop/p/4334160.html)

  1. 问题点的利用扩大以及获取测试

问题点在于,服务端收到用户发来的cookie时,会先进性base64解码,然后AES解密,最后进行反序列化操作。

攻击点也就在于反序列化操作中,问题的产生点在于AES解密的破解。当然,算不上是破解,只能说是AES加密的绕过。这里的方式是获取密钥,在早期的shiro系统中密钥是硬编码,所以可以直接获取,后更新为随机编码。

3.1 如何利用

利用payload需要先序列化->利用相应密钥进行AES加密->base64编码,放在cookie中的remeberme字段中,发送即可。

3.2 如何挖掘

官方硬编码存在版本为低于1.24版本,该版本以上采用了由开发者设置的方式,未设置的会采用动态生成的方式。

但是由于很多情况下shiro是集成的,部分产品基于二次开发,导致实际上和硬编码的效果是一样的。

所以第一步是收集shiro的编码。

第二步进行比对,若正确则可用。

第三步就是发送payload

这里重点讲一下比对的过程,这也是漏洞挖掘的最关键点。

首先,这个方法的来源是这篇分析博客(https://mp.weixin.qq.com/s/WDmj4-2lB-hlf_Fm_wDiOg),感谢大佬。

分两步,第一步确定存在,即给予一个remeberme字段(为了防止第一次碰对的情况,请使用base64编码的垃圾数据),通过其返回set-cookie:remeberMe=deleteMe字段,确定尝试点。

第二步,发送加密数据,如果不存在set-cookie:remeberMe=deleteMe字段,则证明加密的加密模式与密钥与目标相同。(这里包括密钥内容与加密模式)

第三步发送加密payload

  1. 问题点自动化利用

自动化利用的方式重点就这密钥收集,类型判断以及payload生成上。

具体的工具,想仿写一个,近期没时间动手,请参考上文。

  1. WAF的绕过

先思考这类waf我们如何检测,是进行进行payload检测,解码后过长禁止?

进行解码后内容对比,还是密钥输入?

首先可知不可能每次让用户输入密钥,其次,解码后内容大小本身我们也不可控,更何况有上文说的那种大小绕过方式。

https://mp.weixin.qq.com/s/qF7Jgiev5B7zLEHwGXry3A

这篇文章的师傅测试了aliyunwaf规则,发现只有对最简单的默认key的匹配。这个key,他通用吗?这个是早版本的key,过两天有时间看看ali有没有同步更多的key吧。(挖个坑)

后面师傅还给了一种默认key也可以过waf的方式,那就是利用解析漏洞。(先这么称呼),解析规则的不同带来了不同的绕过体验。

这个和我之前sql注入那篇提到的waf绕过有异曲同工之妙,也是通过解码无害的思想对攻击语句进行“修饰”。

 

时间缘故,没找到什么好比过这位师傅的绕过方式,考虑一下防御问题。

同样的是长度限制,是否能够提取常见数据进行一个长度提取,然后进行大小限制。显而易见的是waf性能要求较高,算是提取特征进行防御的一种方式。

第二种解码后,只能说提供方式但是由于安全性的问题并不可取。

安全开发高于安全防御吧hh

还有就是遇到不可解密的数据应当提供日志,警告等方式。

加密模式应该宽松化等等。

(接下来会写一下常见的古今加密流程,顺便实现一下这个工具,也挖个坑吧。)

 

posted @ 2021-08-27 19:05  HOloBlogs  阅读(288)  评论(0)    收藏  举报