首页 > 编程知识 正文

shiro框架详解,shiro安全框架

时间:2023-05-03 07:34:01 阅读:46839 作者:883

另一方面,Shiro漏洞原理Apache Shiro框架提供了一种记住我的功能,如果用户成功登录,它将生成加密和编码的cookie。

cookie的key是RemeberMe,cookie的值是使用序列化相关信息、用aes加密,最后使用base64编码创建的

如果服务端收到cookie值,请按以下步骤解决。

获取RemeberMe cookie的值使用Base 64解码ACE解码(加密密钥硬代码)的反序列化操作(无过滤)调用反序列化时不进行过滤,可能导致远程代码执行漏洞

用户登录成功后,将生成加密编码的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 # shiropaddingoracleattack

CVE-2016-4437#Shiro rememberMe反序列化漏洞

开源burp shiro检测插件:

33559 github.com/pmiaowu/burpshiropassivescan

3359 github.com/po tats0/Shiro POC

shiro漏洞利用工具:

3359 github.com/j1an fen/Shiro _ attack

3359 github.com/Fuping lee/Shiro scan

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。