Shiro
简介
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。 Shiro框架直观、易用,同时也能提供健壮的安全性。Apache Shiro1.2.4及以前版本中,加密的用户信息序列化后存储在名为 remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户 Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令,
前置申明
本博客所有内容均为作者的个人学习笔记记录,作者也是小白一枚,如果有什么地方写的不对或者对您带来影响欢迎底部留言或者点击右下角的图标与我联系吧
本博客的所有Security 大类下的文章只能作为
如果喜欢我的文章欢迎各位大佬点击右下角的订阅图标开启浏览器推送吧,这样你只要不清除浏览器缓存就能第一时间收到我的更新通知啦(如果你的网络如果能上Google就用Chrome浏览器订阅,如果不能推荐用微软的Edge浏览器,目前正在寻找解决办法,订阅成功后会有一条提示成功,如果未收到表示网络限制原因未订阅成功)
中华人民共和国网络安全法(2017年6月1日起施行) 第二十二条任何个人和组织不得从事入侵他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供从事入侵网络、干扰网络正常功能、窃取网络数据等危害网络安全活动的工具和制作方法;不得为他人实施危害网络安全的活动提供技术支持、广告、推广、支付结算等帮助。 第三十八条任何个人和组织不得窃取或者以其他非法方式获取公民个人信息,不得出售或者非法向他人提供公民个人信息 第六十三条违反本法规定,给他人造成损害的,依法承担民事责任 第六十四条违反本法规定,构成犯罪的,依法追究刑事责任 中华人民共和国刑法(285286) 第二百八十五条违反国家规定,侵入国家事务、国防建设、尖端科学技术领域的计算机信息系统的处三年以下有期徒刑或者拘役 第二百八十六条违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役:后果特别严重的,处五年以上有期徒刑。违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚 中华人民共和国刑法修正案7(第九条) 在刑法第二百八十五条中增加两款作为第二款、第三款:“违反国家规定,侵入前款规定以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,情节严重的,处三年以下有期徒刑或者拘役,并处或者单处罚金:情节特别严重的,处三年以上七年以下有期徒刑,并处罚金提供专门用于侵入、非法控制计算机信息系统的程序、或者明知他人实施侵入、非法控制计算机信息系统的违法犯罪行为而为其提供程序、工具,情节严依照前款的规定处罚。
Shiro 550
演示环境:shiro/CVE-2016-4437 如果 rememberMe的AES加密密钥泄露,无论 shiro是什么版本都会导致反序列化漏洞。 shro反序列化的特征:在返回包的Set- Cookie中存在 rememberMe= deleteMe字段。
启动
1 | # 进入vulhub |
Shiro反序列化加解密流程
- Remember me的内容进行一系列处理
- 使用Java序列化->使用密钥进行AES加密->Base64加密 得到加密后的 Remember Me内容
- 同时在识别用户身份的时候,需要对 Remember Me的字段进行解密,解密的顺序为
- Remember Me加密内容—>Base64解密 使用密钥进行AES解密->Java反序列化
- 使用 Shiro内置的默认密钥对 Payload进行加密
1 | package shiro; |
DNSlog
DNSlog在web漏洞利用中已经是老生常谈的问题,简单理解就是在某些==无法直接利用漏洞获得回显的情况下==,但是目标可以发起DNS请求,这个候就可以通过这种方式把想获得的数据外带出来。
公共平台:http://www.dnslog.cn http://ceye.io
利用方式: 布尔、时间盲注、命令执行
漏洞复现
秘钥查看
命令执行
修复建议
- 生成新的秘钥加密
- 在shro的配置文件里,引用 GenerateCipherKey的 generateNewKey方法随机生成秘钥
Shiro-721
Shiro Padding Oracle Attack (Shiro-721)
漏洞原理
由于 Apache Shiro cookie中通过AES-128-CBC模式加密的 rememberMe字段存在问题,用户可通过 Padding Oracle加密生成的攻击代码来构造恶意的 rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。
影响版本
Apache Shiro<1.4.2版本
启动
可参考:https://blog.csdn.net/qq_43645782/article/details/106060334
首先从https://github.com/inspiringz/shiro-721下载文件,其中比较重要的就是一个Shiro-721-master/Docker/src下的war文件
1 | # --rm 后加上 IMAGE ID |
漏洞复现
获取rememberMe的值
可通过浏览器的F12 或者 BurpSuite 截包获取 rememberMe 的值
利用
我这里没有复现成功,第一是我部署在云服务器的,本地没有开内外网穿透不好进行反弹,第二是我这款软件那个反弹的下拉框哪里选不起,可能根我的Java环境有关
Shiro 认证漏洞
Apache Shiro认证绕过漏洞(目录穿越):CVE-2020-1957
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。 shiro框架直观、易用,同时也能提供健壮的安全性,在 Apache Shiro1.5.2以前的版本中,在使用 Spring动态控制器时,攻击者通过构造..;这样的跳转,可以绕过Shiro中对目录的权限限制
启动
1 | # 进入vulhub |
漏洞复现
1 | #payload |