Apache Shiro 1.2.4反序列化漏洞(CVE-2016-4437)
漏洞简介
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro
框架直观、易用,同时也能提供健壮的安全性。
Apache Shiro框架提供了记住我(RememberMe)的功能,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问。
Shiro对rememberMe的cookie做了加密处理,shiro在CookieRememberMeManaer类中将cookie中rememberMe字段内容分别进行序列化、AES加密、Base64编码操作。
在识别身份的时候,需要对Cookie里的rememberMe字段解密。根据加密的顺序,不难知道解密的顺序为:
- 获取rememberMe cookie
- base64 decode
- 解密AES(加密密钥硬编码)
- 反序列化(未作过滤处理)
但是,AES加密的密钥Key被硬编码在代码里,意味着每个人通过源代码都能拿到AES加密的密钥。因此,攻击者构造一个恶意的对象,并且对其序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。
影响版本
- Apache Shiro 1.2.4及以前版本
环境搭建
vulhub地址:https://vulhub.org/#/environments/shiro/CVE-2016-4437/
部署代码:
cd /vulhub/shiro/CVE-2016-4437/
docker-compose up -d
环境截图
访问http://your-ip:8080
可使用admin:vulhub
进行登录。
登录 成功
漏洞复现
使用shiro_attack-4.5.5-SNAPSHOT-all复现漏洞
工具下载地址:shiro_attack-4.5.5-SNAPSHOT-all
另一个利用工具:ShiroExploit.V2.51.7z
使用教程如图:
命令执行:
参考文章:
https://mp.weixin.qq.com/s/jHFYPaKWYasNonUM61WHvg
Apache Shiro未授权访问漏洞(CVE-2020-1957)
漏洞原因
Shiro框架通过拦截器功能来对用户访问权限进行控制,如anon, authc等拦截器。anon为匿名拦截器,不需要登录即可访问;authc为登录拦截器,需要登录才可以访问。
影响版本
Apache Shiro < 1.5.2
环境搭建
Vulhub:https://vulhub.org/#/environments/shiro/CVE-2020-1957/
cd /vulhub/shiro/CVE-2020-1957 #切换目录
docker-compose up -d #拉取环境
环境截图
漏洞复现
Bp开启代理,在 浏览器主页刷新一下抓包 然后 Ctrl+R 把包发送到Repeater模块中
将GET请求的 / 路径改为 /admin/ 并发送包
响应码为302跳转
在将 GET 请求的路径改为 /xxx/..;/admin/ 并发送包
响应码为200,成功登录后台
此时在右击(在左边板块)
选择 “在浏览器中显示响应”
复制链接,并且关闭Bp的抓包功能,在bp的浏览器中粘贴网址打开
成功登录
参考链接:https://blog.csdn.net/qq_44880255/article/details/119605150