1.漏洞描述
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
2.影响版本
Apache Shiro <= 1.2.4
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
3.漏洞原理分析
Apache Shiro框架提供了记住我的功能(RememberMe),用户登陆成功后会生成经过加密并编码的cookie,在服务端接收cookie值后,Base64解码–>AES解密–>反序列化。攻击者只要找到AES加密的密钥,就可以构造一个恶意对象,对其进行序列化–>AES加密–>Base64编码,然后将其作为cookie的rememberMe字段发送,Shiro将rememberMe进行解密并且反序列化,最终造成反序列化漏洞。
3.漏洞环境
访问127.0.0.1:8080,显示如下则说明环境开启成功。
输入默认的账号密码尝试登录,账号为admin,密码为vulhub,登录成功显示如下
3.2 如何发现
-
漏洞特征:Shiro反序列化漏洞存在特征,在返回包的Set-Cookie中存在rememberMe=deleteMe 字段。
-
注意:以下每一步操作后记得清除浏览器缓存,保证浏览器状态为初始空白状态。
-
在登录页面,存在一个选择框,提供给用户选择是否勾选RememberMe,当我们不勾选时输入默认账号密码,设置代理为BurpSuite并点击登录。
-
当我们勾选rememberMe时输入默认账号密码,设置代理为BurpSuite并点击登录
5. 用BurpSuite拦截该请求,发送到repeater模块并点击send,可以看到请求中多了rememberMe字段,同时响应中rememberMe的值也变成一大段。
6.
以上都是使用正确的账号密码登录的情况,再试试使用错误账号密码同时勾选rememberMe的情况,在上述请求中修改账号密码并点击send,响应中rememberMe的值为deleteMe。
工具利用
1.下载shiro反序列化漏洞综合利用工具(文章末尾自取)
2.输入目标地址,注意填写协议http,然后点击爆破秘钥。
点击爆破利用链及回显,可以看到当前利用链和回显位置适用。
切换功能区至命令执行,输入whoami,可以看到获取的权限为root,由此证明可以实现远程命令执行。
输入cat /etc/passwd,可以查看到文件内容。
4.漏洞验证
vulnerable:True表示存在shiro漏洞
4.1 使用shiro_exploit.py进行利用,尝试写入文件jason123.txt
`python shiro_exploit.py -t 3 -u http://192.168.233.134:8080 -p "touch jason123.txt"`
4.2 登陆到目标靶机,发现文件成功写入,说明漏洞存在。
5.深度利用
5.1 尝试深度利用,在kali服务器上使用nc监听6666端口
5.2 使用Base64编码进行加密,保证命令成功执行,防止参数被类破坏。
5.3 使用exp执行反弹shell
5.4 成功获取shell,反弹成功
6.如何防御
-
升级shiro版本
-
修改秘钥
-
限制rememberMe字段长度
工具下载
关注公众号网络安全学习爱好者后台回复关键字:CVE-2016-4437获取百度网盘下载链接
原文始发于微信公众号(网络安全学习爱好者):Shiro 反序列化漏洞复现
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论