shiro漏洞复现及其攻击流量分析

前言

最近面试时经常被问到,每次说的都不太完美,现在再来复现一边。

shiro介绍

Apache Shiro是一个开源安全框架,提供身份验证、授权、密码学和会话管理。

CVE-2016-4437

利用vulhub搭建的靶场。

在Apache Shiro <= 1.2.4版本中存在反序列化漏洞。

该漏洞成因在于,Shiro的“记住我”功能是设置cookie中的rememberMe值来实现。当我们给rememberMe赋值时,它会经过一下过程。

  1. 检索cookie中RememberMe的值
  2. Base64解码
  3. 使用AES解密
  4. 反序列化

当我们知道了AES加解密时的密钥(该密钥是写死在代码中)时,我们便可以去修改rememberMe的值,改造其readObject()方法,让其在反序列化时执行任意操作。

服务器接收数据后的流程为

  1. 读取cookie中rememberMe值
  2. base64解码
  3. AES解密
  4. 反序列化

使用工具来执行命令。

![image-20230409134603547](https://img-
blog.csdnimg.cn/img_convert/36811a155067c2149cd3671e73f40d3b.png)

利用wireshark来抓取流量。

![image-20230409134643553](https://img-
blog.csdnimg.cn/img_convert/d7de012346c4f04f9647a3391253ef53.png)

![image-20230409134652305](https://img-
blog.csdnimg.cn/img_convert/6f1e67df83a829f5ef1055f012e283dd.png)

回显时会有一串base64加密的值,代表着命令执行成功。

![image-20230409134742636](https://img-
blog.csdnimg.cn/img_convert/008ea87ac8882eef4cc7c7781a9b9df9.png)

总结:CVE-2016-4437的攻击流量特征有

  1. 请求包Cookie的rememberMe中会存在AES+base64加密的一串java反序列化代码。
  2. 返回包中存在base64加密数据,该数据可作为攻击成功的判定条件。

如果攻击者利用其反弹shell,还可以通过对rememberMe中的数据解码来获得反弹的ip地址。

shrio550和721的区别

  1. 主要区别在于Shiro550使用已知默认密码,只要有足够的密码,不需要Remember Cookie的
  2. Shiro721的ase加密的key为系统随机生成,需要利用登录后的rememberMe去爆破正确的key值。利用有效的RememberMe Cookie作为Padding Oracle Attack的前缀,再去构造反序列化攻击。

CVE-2020-1957

在Spring web项目中,请求URI/resource/menus和/resource/menus/都可以访问到服务器的资源。

但在Shiro中的URL路径表达式pathPattern可以正确匹配/resource/menus,但不能正确匹配/resource/menus/,导致过滤链无法正确匹配,从而绕Shiro的防护机制

直接访问/xxx/…;/admin/可以绕过权限校验访问到管理页面

![image-20230409183223703](https://img-
blog.csdnimg.cn/img_convert/5a9537f4dc040e6af05c64530c8ac8fb.png)
该漏洞的流量分析只能去看请求头加ip的访问频繁次数来判断是否为测试。
![image-20230409183453682](https://img-
blog.csdnimg.cn/img_convert/651c708f56944392f1757c50297cfd72.png)

网络安全工程师(白帽子)企业级学习路线

第一阶段:安全基础(入门)

img

第二阶段:Web渗透(初级网安工程师)

img

第三阶段:进阶部分(中级网络安全工程师)

img

如果你对网络安全入门感兴趣,那么你需要的话可以点击这里👉网络安全重磅福利:入门&进阶全套282G学习资源包免费分享!

学习资源分享

### 关于 Apache Shiro 721 漏洞复现 #### 启动含有漏洞的应用环境 为了能够测试和研究Shiro 721漏洞,可以通过Docker来部署一个存在此漏洞的服务实例。具体操作如下所示: ```bash docker run -d -p 8080:8080 vulfocus/shiro-721 ``` 这条命令将会拉取并运行名为`vulfocus/shiro-721`的镜像,在宿主机上开放8080端口用于访问目标应用服务[^1]。 #### 准备攻击工具 针对Shiro框架中存在的反序列化漏洞,有专门开发出来的利用脚本可以帮助研究人员更方便地进行实验性的探索工作。可以从GitHub仓库下载适用于Shiro版本1.2.4的RCE(Remote Code Execution)利用工具: ```bash git clone https://github.com/zhzyker/shiro-1.2.4-rce.git cd shiro-1.2.4-rce/ ``` 上述指令会克隆包含可执行Python脚本在内的项目源码至当前目录下,这些脚本可用于生成恶意请求以触发远程代码执行漏洞[^4]。 #### 构建与发送恶意请求 在准备好以上前提条件之后,就可以按照所选方法构建特定形式的数据包向服务器发起连接尝试。通常情况下,这涉及到创建经过特殊编码处理后的HTTP头部信息或者其他类型的输入参数,使得当它们被应用程序解析时能激活潜在的安全风险点。对于具体的实现细节,则依赖于实际使用的渗透测试工具及其文档说明。 请注意,这里仅作为学习目的描述了如何设置实验环境以及准备必要的资源来进行安全研究;绝不鼓励任何形式非法入侵行为或未经授权的操作实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值