shiro550漏洞复现(基于docker搭建&&自动化工具实现)

目录

shiro550漏洞介绍:

环境搭建:

漏洞复现:

漏洞利用:

漏洞修复:

shiro550漏洞介绍:

Apache Shiro RememberMe 反序列化导致的命令执行漏洞。

Apache Shiro 是一个强大且易用的 Java 安全框架 , 执行身份验证、授权、密码和会话管理
身份验证授权和登录用户认证授权问题的。

环境搭建:

基于docker搭建

拉取镜像:docker pull medicean/vulapps:s_shiro_1

镜像下载完成后启动容器:docker run -d -p 8080:8080 medicean/vulapps:s_shiro_1

本地浏览器访问漏洞环境:your-ip:8080

 至此漏洞环境搭建完成了(docker搭建环境就是如此简单粗暴)

漏洞复现:

点击account page进入一个登陆界面,在登陆界面输入root/secret (不要忘记勾选上Remember Me)点击Login,抓取此时的数据包。

 

因为在appache shrio 中当我们开启了Remember Me功能时就会在登录后数据包回显一个 rememberMe=deleteMe然后下面就会带着cookie后续一直带着这个cookie交互。

 这个cookie是如何生成的(加密流程):首先进行序列化传入的root用户名,然后使用AES加密算法加密序列化后的数据AES/CBC/PKCS5Padding, AES的加密密钥是硬编码在程序中的通过函数找到然后使用 encrypt函数加密,把加密的内容进行base64加密后放到回显包里。

Cookie解密流程就是相反的:首先进行base64解密cookie 中 rememberMe的值然后根据解密 vi 是 秘文的前16位(vi即为rememberMe解码后的前16个字节)有了key 和 vi 就可以解密到反序列化的数据了。

漏洞利用:

因为它的反序列化数据没有进行过滤,这意味着我们可以传入恶意的反序列化数据,只要我们爆破出的key,就可以按照前面所介绍的cookie加密流程构造一个含有存在命令执行组件的方法。

这个我们利用shiro工具:

将我们登录页面的网址输入,第一步先检测key值,发现成功找到了可以利用的key。

 找到key值以后,我们点击执行whoami,执行完毕发现自己是root用户。

我们可以在命令执行框内输入我们想要执行的命令。

上面还有对目标网站上传shell的功能,可以用webshell管理工具进行连接。

至此漏洞复现完成。

漏洞修复:

可以升级Shiro到最新版或者是部署WAF拦截Cookie中长度过大的rememberMe值。

(有小伙伴对上面使用的工具感兴趣的可以加关注私聊我,我会分享给大家。)

猜你喜欢

转载自blog.csdn.net/m0_52701599/article/details/129769205