一、初步认识shiro来源
是什么:
Apache Shiro是一个Java安全框架,执行身份验证、授权、密码和会话管理。
背景:
2016年,网络中曝光1.2.4以前的版本存在反序列化漏洞。尽管该漏洞已经曝光几年,但是在实战中仍然比较实用。
二、如何利用shiro漏洞
漏洞原理:
Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie。cookie的key为RememberMe,cookie的值是经过对相关信息进行序列化,然后使用aes加密,最后在使用base64编码处理形成的。
一般来说,在服务端接收cookie值时,按照如下步骤来解析处理:
1、检索RememberMe cookie 的值
2、Base 64解码
3、使用AES解密(加密密钥硬编码)
4、进行反序列化操作(未作过滤处理)
重点:
在调用反序列化时未进行任何过滤,导致可以触发远程代码执行漏洞。
漏洞利用:
本质:通过构造恶意的序列化对象进行编码,加密,然后作为cookie加密发送,服务端接收后会解密并触发反序列化漏洞。
由于使用来aes加密,要想成功利用漏洞则需要获取aes的加密密钥,在shiro的1.2.4之前版本中使用的是硬编码。其默认密钥的base64编码后的值为kPH+bIxk5D2deZiIxcaaaA==。
可以通过搜索引擎、github等来收集密钥,提高漏洞检测与利用的成功率。
三、快速找到shiro漏洞
1、在登录页面时,提交表单后看响应头中的set-cookie是否存在remeberMe=deleteMe、rememberMe=1、set-cookie=shiroCookie等字眼。
2、在流量中搜索remeberMe=deleteMe。
3、通过fofa、zoomeye、shodan这类平台搜索相关特征来发现目标。
例如fofa的搜索关键词:header=“rememberme=deleteMe”、header=“shiroCookie”
四、初步利用shiro漏洞
发现目标
初步验证
靶机信息收集
云服务器,history -c,exit