Shiro漏洞汇总简述及key分享

admin 2022年3月3日10:26:50评论582 views字数 9520阅读31分44秒阅读模式
Shiro漏洞汇总简述及key分享

△△△点击上方“蓝字”关注我们了解更多精彩




0x00 前言
由于工作原因,接下来一段事件更多的会涉及WEB基础,强迫症的我开始了重新的学习研究。
CS4.X改造的坑估计得以后有时间才能解决和更新。

CS4.X目前存在的问题有:
1、一台电脑多次上线会导致后续上线失败,原因未知。
解决:重启可能解决,建议虚拟机快照测试,知道解决方案的表哥请教我。

2、C2 profile文件不兼容,猜测是修改了dll密钥或者内部证书的问题,以后会逐步分析处理。
解决:照着我带的C2 profile文件进行修改应该就不会影响使用。

3、反编译的stage上线地址代码存在一点问题,导致大家复现失败。

4、我还没有CS4.3-20210317版本。



0x01 Apache Shiro 介绍
Shiro是一个易用的Java安全框架,提供了认证、授权、加密和会话管理功能,可为任何应用提供安全保障 - 从命令行应用、移动应用到大型网络及企业应用。


Shiro主要是为了解决web应用的身份验证问题:

认证 - 用户身份识别,即用户“登录”;

授权 - 访问控制;

密码加密 - 保护或隐藏数据防止被偷窥;

会话管理 - 每用户相关的时间敏感的状态。


shiro框架特征:
在请求包cookie中带有rememberMe=1字段
在返回包的 Set-Cookie中存在rememberMe=deleteMe字段

Shiro主要漏洞方向:
1、Shiro 反序列化 RCE
2、Shiro 身份验证绕过




0x02 Shiro 反序列化 RCE
1、CVE-2016-4437(Shiro-550)攻击高版本Shiro

(Shiro<1.4.2 or Shiro>1.4.2)

Apache Shiro框架提供RememberMe,用户登陆成功后会生成经过加密并编码的cookie。cookie的key为RememberMe,cookie的值是经过对相关信息进行序列化,然后使用aes加密,最后在使用base64编码处理形成的。

因为在反序列化时,不会对其进行过滤,所以如果传入恶意代码将会造成安全问题。

在 1.2.4 版本前,shiro中使用默认ASE秘钥(CBC模式),Key: kPH+bIxk5D2deZiIxcaaaA==,可以直接反序列化执行恶意代码。

在1.2.4之后,修复为自定义ASE秘钥(CBC模式),需要获取到Key才可以进行渗透,通过采集获取常用的github中常用的key值。

在1.4.2之后,使用了新的GCM模式进行AES加密,需要使用新的加密算法,并获取到Key才可以进行渗透。

漏洞利用需要可用的AES密钥。

相关检测利用工具:
[支持GCM][burp插件]  pmiaowu/BurpShiroPassiveScanhttps://github.com/pmiaowu/BurpShiroPassiveScan[支持GCM][java-gui]  j1anFen/shiro_attackhttps://github.com/j1anFen/shiro_attack

2、CVE-2019-12422 Shiro <=1.4.2 Padding Oracle Attack RCE (Shiro-721)

Shrio<=1.4.2中cookie里的rememberMe字段采用了AES-128-CBC的加密模式,这使得该字段可以被padding oracle 攻击利用。
攻击者可以使用一个合法有效的rememberMe 的cookie作为前缀来实施POA,然后制造一个特制的rememberMe来执行Java反序列化攻击
漏洞利用需要获取一个合法用户的rememberMe。

相关漏洞利用检测工具:
[CBC][java-gui] feihong-cs/ShiroExploit-Deprecated:Shiro550/Shiro721 一键化利用工具,支持多种回显方式https://github.com/feihong-cs/ShiroExploit-Deprecated




0x03 Shiro 身份验证绕过
原理:利用shiro解析uri和spring解析uri之间存在差异绕过身份验证。
1、CVE-2020-1957 Shiro<1.5.2 权限绕过
POC【URL中加/..;/】
目标访问地址/xxx/hello/aaaa
最终发起请求【/xxx/..;/hello/aaaa】

2、CVE-2020-11989 Shiro<1.5.3 权限绕过
POC1URL中加/;/】
目标访问地址【/xxx/hello/aaaa】
最终发起请求【/;/xxx/hello/aaaa】

POC2【将URL中的/二次编码为%25%32%66】
目标访问地址【/xxx/hello/aaaa】
最终发起请求【/xxx/hello%25%32%66aaaa


3、CVE-2020-13933 Shiro<1.6.0 权限绕过
POC【URL加编码后的;】
目标访问地址【/xxx/hello/aaaa
最终发起请求【/xxx/hello/%3baaaa


4、CVE-2020-17523 Shiro<1.7.1 权限绕过
POC 【URL中加空字符,如%20】
目标访问地址【/xxx/hello/aaaa】
最终发起请求【/xxx/hello/%20aaaa】



0x04 Shiro key github采集关键字
setCipherKey(Base64.decodecipherKey = Base64.decode(#部分搜索语句可能被屏蔽,可以通过空格拆分等进行模糊搜索
PS:希望推荐个可用的工具能够进行批量Github采集




0x05 关于key的一些思路
采集的过程中发现,有的密钥是通过对指定的字符串进行加密,编码后生成的,能不能根据常用的弱口令字符串生成一些密钥呢?
import java.nio.charset.StandardCharsets;import java.util.Arrays;import org.springframework.util.Base64Utils;

public class main{ public static void main(String[] args) throws Exception {        String encryptKey = "shiro_key";        byte[] encryptKeyBytes = encryptKey.getBytes(StandardCharsets.UTF_8); String rememberKey = Base64Utils.encodeToString(Arrays.copyOf(encryptKeyBytes, 16));        System.out.println(rememberKey); }}

PS:这是一份简单的代码,从采集的shiro项目里面截取出来的(需要整个IDEA环境的请私聊)。感觉应该有大佬写过shiro key批量生成的,希望知道的表哥能分享给我。


0x06 Shiro key 210 分享
kPH+bIxk5D2deZiIxcaaaA==2AvVhdsgUs0FSA3SDFAdag==3AvVhmFLUs0KTA3Kprsdag==4AvVhmFLUs0KTA3Kprsdag==5aaC5qKm5oqA5pyvAAAAAA==6ZmI6I2j5Y+R5aSn5ZOlAA==bWljcm9zAAAAAAAAAAAAAA==wGiHplamyXlVB11UXWol8g==Z3VucwAAAAAAAAAAAAAAAA==MTIzNDU2Nzg5MGFiY2RlZg==zSyK5Kp6PZAAjlT+eeNMlg==U3ByaW5nQmxhZGUAAAAAAA==5AvVhmFLUs0KTA3Kprsdag==bXdrXl9eNjY2KjA3Z2otPQ==fCq+/xW488hMTCD+cmJ3aQ==1QWLxg+NYmxraMoxAXu/Iw==ZUdsaGJuSmxibVI2ZHc9PQ==L7RioUULEFhRyxM7a2R/Yg==r0e3c16IdVkouZgk1TKVMg==bWluZS1hc3NldC1rZXk6QQ==a2VlcE9uR29pbmdBbmRGaQ==WcfHGU25gNnTxTlmJMeSpw==ZAvph3dsQs0FSL3SDFAdag==tiVV6g3uZBGfgshesAQbjA==cmVtZW1iZXJNZQAAAAAAAA==ZnJlc2h6Y24xMjM0NTY3OA==RVZBTk5JR0hUTFlfV0FPVQ==WkhBTkdYSUFPSEVJX0NBVA==GsHaWo4m1eNbE0kNSMULhg==l8cc6d2xpkT1yFtLIcLHCg==KU471rVNQ6k7PQL4SqxgJg==0AvVhmFLUs0KTA3Kprsdag==1AvVhdsgUs0FSA3SDFAdag==25BsmdYwjnfcWmnhAciDDg==3JvYhmBLUs0ETA5Kprsdag==6AvVhmFLUs0KTA3Kprsdag==6NfXkC7YVCV5DASIrEm1Rg==7AvVhmFLUs0KTA3Kprsdag==8AvVhmFLUs0KTA3Kprsdag==8BvVhmFLUs0KTA3Kprsdag==9AvVhmFLUs0KTA3Kprsdag==OUHYQzxQ/W9e/UjiAGu6rg==a3dvbmcAAAAAAAAAAAAAAA==aU1pcmFjbGVpTWlyYWNsZQ==bXRvbnMAAAAAAAAAAAAAAA==OY//C4rhfwNxCQAQCrQQ1Q==5J7bIJIV0LQSN3c9LPitBQ==f/SY5TIve5WWzT4aQlABJA==bya2HkYo57u6fWh5theAWw==WuB+y2gcHRnY2Lg9+Aqmqg==3qDVdLawoIr1xFd6ietnwg==YI1+nBV//m7ELrIyDHm6DQ==6Zm+6I2j5Y+R5aS+5ZOlAA==2A2V+RFLUs+eTA3Kpr+dag==6ZmI6I2j3Y+R1aSn5BOlAA==SkZpbmFsQmxhZGUAAAAAAA==2cVtiE83c4lIrELJwKGJUw==fsHspZw/92PrS3XrPW+vxw==XTx6CKLo/SdSgub+OPHSrw==sHdIjUN6tzhl8xZMG3ULCQ==O4pdf+7e+mZe8NyxMTPJmQ==HWrBltGvEZc14h9VpMvZWw==rPNqM6uKFCyaL10AK51UkQ==Y1JxNSPXVwMkyvES/kJGeQ==lT2UvDUmQwewm6mMoiw4Ig==MPdCMZ9urzEA50JDlDYYDg==xVmmoltfpb8tTceuT5R7Bw==c+3hFGPjbgzGdrC+MHgoRQ==ClLk69oNcA3m+s0jIMIkpg==Bf7MfkNR0axGGptozrebag==1tC/xrDYs8ey+sa3emtiYw==ZmFsYWRvLnh5ei5zaGlybw==cGhyYWNrY3RmREUhfiMkZA==IduElDUpDDXE677ZkhhKnQ==yeAAo1E8BOeAYfBlm4NG9Q==cGljYXMAAAAAAAAAAAAAAA==2itfW92XazYRi5ltW0M2yA==XgGkgqGqYrix9lI6vxcrRw==ertVhmFLUs0KTA3Kprsdag==5AvVhmFLUS0ATA4Kprsdag==s0KTA3mFLUprK4AvVhsdag==hBlzKg78ajaZuTE0VLzDDg==9FvVhtFLUs0KnA3Kprsdyg==d2ViUmVtZW1iZXJNZUtleQ==yNeUgSzL/CfiWw1GALg6Ag==NGk/3cQ6F5/UNPRh8LpMIg==4BvVhmFLUs0KTA3Kprsdag==MzVeSkYyWTI2OFVLZjRzZg==empodDEyMwAAAAAAAAAAAA==A7UzJgh1+EWj5oBFi+mSgw==c2hpcm9fYmF0aXMzMgAAAA==i45FVt72K2kLgvFrJtoZRw==U3BAbW5nQmxhZGUAAAAAAA==Jt3C93kMR9D5e8QzwfsiMw==MTIzNDU2NzgxMjM0NTY3OA==vXP33AonIp9bFwGl7aT7rA==V2hhdCBUaGUgSGVsbAAAAA==Q01TX0JGTFlLRVlfMjAxOQ==Is9zJ3pzNh2cgTHB4ua3+Q==NsZXjXVklWPZwOfkvk6kUA==GAevYnznvgNCURavBhCr1w==66v1O8keKNV3TTcGPK1wzg==SDKOLKn2J1j/2BHjeZwAoQ==kPH+bIxk5D2deZiIxcabaA==kPH+bIxk5D2deZiIxcacaA==3AvVhdAgUs0FSA4SDFAdBg==4AvVhdsgUs0F563SDFAdag==FL9HL9Yu5bVUJ0PDU1ySvg==5RC7uBZLkByfFfJm22q/Zw==eXNmAAAAAAAAAAAAAAAAAA==fdCEiK9YvLC668sS43CJ6A==FJoQCiz0z5XWz2N2LyxNww==HeUZ/LvgkO7nsa18ZyVxWQ==HoTP07fJPKIRLOWoVXmv+Q==iycgIIyCatQofd0XXxbzEg==m0/5ZZ9L4jjQXn7MREr/bw==NoIw91X9GSiCrLCF03ZGZw==oPH+bIxk5E2enZiIxcqaaA==QAk0rp8sG0uJC4Ke2baYNA==Rb5RN+LofDWJlzWAwsXzxg==s2SE9y32PvLeYo+VGFpcKA==SrpFBcVD89eTQ2icOD0TMg==U0hGX2d1bnMAAAAAAAAAAA==Us0KvVhTeasAm43KFLAeng==Ymx1ZXdoYWxlAAAAAAAAAA==YWJjZGRjYmFhYmNkZGNiYQ==zIiHplamyXlVB11UXWol8g==ZjQyMTJiNTJhZGZmYjFjMQ==YystomRZLMUjiK0Q1+LFdw==QDFCnfkLUs0KTA3Kprsdag==2adsfasdqerqerqewradsf==5oiR5piv5p2h5ZK46bG8IQ==3AvVhmFLUs0KTA3KaTHGFg==2AvVCXsxUs0FSA7SYFjdQg==TGMPe7lGO/Gbr38QiJu1/w==GhrF5zLfq1Dtadd1jlohhA==sBv2t3okbdm3U0r2EVcSzB==AztiX2RUqhc7dhOzl1Mj8Q==QVN1bm5uJ3MgU3Vuc2l0ZQ==3Av2hmFLAs0BTA3Kprsd6E==YVd4dmRtVjViM1UlM0QIdn==5AvVhCsgUs0FSA3SDFAdag==QUxQSEFNWVNPRlRCVUlMRA==9Ami6v2G5Y+r5aPnE4OlBB==sgIQrqUVxa1OZRRIK3hLZw==mIccZhQt6EBHrZIyw1FAXQ==wrjUh2ttBPQLnT4JVhriug==3rvVhmFLUs0KAT3Kprsdag==4WCZSJyqdUQsije93aQIRg==4rvVhmFLUs0KAT3Kprsdag==FP7qKJzdJOGkzoQzo2wTmA==UGlzMjAxNiVLeUVlXiEjLw==c2hvdWtlLXBsdXMuMjAxNg==4AvVhmFLUs0KTA3Kpr3sd3ag==QF5HMyZAWDZYRyFnSGhTdQ==2AvVhdsgUsOFSA3SDFAdag==ZWvohmPdUsAWT3=KpPqdafCq+/xW488hMTCE+cmJ3FF==HOlg7NHb9potm0n5s4ic0Q==YWdlbnRAZG1AMjAxOHN3Zg==3AvVhMFLIs0KTA3Kprsdag==M2djA70UBBUPDibGZBRvrA==AF05JAuyuEB1ouJQ9Y9Phg==4AvVhmFLUs0KTA3KAAAAAA==4AvVhmFLUsOKTA3Kprsdg==4AvVhmFLUs0KTA3Kprseaf==2AvVhdUs0FSA3SDFAdag==w793pPq5ZVBKkj8OhV4KaQ==Z3VucwAAAAAAAAAAAAABBB==pyyX1c5x2f0LZZ7VKZXjKO==8AvVhdsgUs0FSA3SDFAdag==B9rPF8FHhxKJZ9k63ik7kQ==4AvVhmFLUs0KTA3KprSdAg==2AvVidsaUSofSA3SDFAdog==3qDVdLawoIr1xFd6ietnsg==R29yZG9uV2ViAAAAAAAAAA==3AvVhmFLUs0KTA3Kprsdag ==2AvHhdsgUs0F0A3SDFAPa*==2AvVhdsgUs0FSA3SDFAder==GHxH6G3LFh8Zb3NwoRgfFA==A+kWR7o9O0/G/W6aOGesRA==2AvVhdDFCVdfdfDFAdag==4AvVhmFLUs5KTA1Kprsdag==2AvVhmFLUs0KTA3Kprsdag==b2EAAAAAAAAAAAAAAAAAAA==AsfawfsdfaAasdWWW==fcq+/xW488hMTCD+cmJ3aq==wyLZMDifwq3sW1vhhHpgKA==pMvTx48hLt+/C8D+cM5vR==YnlhdnMAAAAAAAAAAAAAAA==W2h5bXNdY29va2llQA==3AvVhdAgUs1FSA4SDFAdBg==ZGdmdwAAAAAAAAAAAAAAAACj6LnKZNLEowAZrdqyH/Ew==Z3VucwACAOVAKALACAADSA==duhfin37x6chw29jsne45m==FjbNm1avvGmWE9CY2HqV75==AvVhmFLUs0KTA3Kprsdag==2AvVhdsgERdsSA3SDFAdag==4AvVhmFLUs0TTA3Kprsdag==LEGEND-CAMPUS-CIPHERKEY==2AvVhdsgUs0FSA3SaFAdfg==4AvVhm2LUs0KTA3Kprsdag==pbnA+Qzen1vjV3rNqQBLHg==RmluZExvdmVyfssgaegsfas==CrownKey==a12d/dakdad6Df5w6FRPCVQV0dhhUrZ*Zm0@5ZZ9L4jjQXn7MREp^b^7IkPv59vyqzj00x11LXJZTjJ2UHW48jzHNa69ec781563b1a5d791f7b2bdd117a36bGVhcm4gc2hpcm8gcXVpY2tseSBhbmQgc3lzdGVtYXRpY2FsbHk=YTM0NZomIzI2OTsmIzM0NTueYQ==Z3h6eWd4enklMjElMjElMjE=
#有的应该是错的,我这管采不管用




0xEND Summary 总结
本文漏洞详情参考学习链接:
一文看懂shiro反序列化漏洞https://mp.weixin.qq.com/s/6vlI5tyaw71sUPWQGAwK4g
Shiro高版本加密方式下的漏洞利用 | AresX's Bloghttps://ares-x.com/2020/10/26/Shiro%E9%AB%98%E7%89%88%E6%9C%AC%E5%8A%A0%E5%AF%86%E6%96%B9%E5%BC%8F%E4%B8%8B%E7%9A%84%E6%BC%8F%E6%B4%9E%E5%88%A9%E7%94%A8/
Shiro 721 Padding Oracle攻击漏洞分析 - 安全客,安全资讯平台https://www.anquanke.com/post/id/193165
Padding Oracle Attack(填充提示攻击)详解及验证 - 简书https://www.jianshu.com/p/833582b2f560
Apache shiro 权限绕过漏洞汇总 - T00LShttps://www.t00ls.net/thread-57558-1-1.html
Shiro 权限绕过漏洞分析(CVE-2020-1957)https://paper.seebug.org/1196/
Apache Shiro 身份验证绕过漏洞复现 (CVE-2020-11989)https://mp.weixin.qq.com/s?__biz=Mzg2NTA4OTI5NA==&mid=2247488061&idx=1&sn=1d85c84949b11de0fd6319319929ecc7&chksm=ce5e305cf929b94aa87b94e1c0323b78d9e3782ff66f622ce5a9b01a99bdbd174f9fb92f19fd&scene=126&sessionid=1596618048&key=2101a05471cbc521cb3fcd41173e9d503620648c21c728f0cf23f989c28b1265139dbb38b93d572a77c2c9d4c08646fd1dfeb5df21fcca72a423beeb1d968ed4d7ba916afc0c5f1cdf42eaf30e4bef5d&ascene=1&uin=MTgyNzU5NTU2NQ%3D%3D&devicetype=Windows+10+x64&version=62090070&lang=zh_CN&exportkey=A%2F25%2Bgu2BRc%2BkfupyfIxG54%3D&pass_ticket=QBHsL98Q7wZ5MLAkGVScz4cieN%2Blwr8ipxswKg4lixfUj2vf4fSb6g8hyDFRntIC
Apache shiro安全漏洞(CVE-2020-13933)分析 - 先知社区https://xz.aliyun.com/t/8230
Apache Shiro 认证绕过分析(CVE-2020-17523) - FreeBuf网络安全行业门户https://www.freebuf.com/vuls/262927.html 

END



如您有任何投稿、问题、建议、需求、合作、后台留言NOVASEC公众号!

Shiro漏洞汇总简述及key分享

或添加NOVASEC-MOYU 以便于及时回复。

Shiro漏洞汇总简述及key分享

感谢大哥们的对NOVASEC的支持点赞和关注

加入我们与萌新一起成长吧!


本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!

本文始发于微信公众号(NOVASEC):Shiro漏洞汇总简述及key分享

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月3日10:26:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Shiro漏洞汇总简述及key分享http://cn-sec.com/archives/494313.html

发表评论

匿名网友 填写信息