Shiro漏洞检测
Posted OKSandy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shiro漏洞检测相关的知识,希望对你有一定的参考价值。
关于Shiro漏洞检测工具的使用说明
Shiro-550反序列化漏洞简介
漏洞简介:
Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。Shiro框架直观、易用,同时也能提供健壮的安全性。
Apache Shiro 1.2.4及以前版本中,加密的用户信息序列化后存储在名为remember-me的Cookie中。攻击者可以使用Shiro的默认密钥伪造用户Cookie,触发Java反序列化漏洞,进而在目标机器上执行任意命令。
影响版本 Shiro <= 1.2.4
漏洞检测工具
工具一:ShiroExploit
支持对Shiro550(硬编码秘钥)和Shiro721(Padding Oracle)的一键化检测,支持多种回显方式
1)工具下载:ShiroExploit.V2.51
2)下载成功,双击jar,打开工具运行界面
界面内容简介:
–漏洞类型Shiro550-无需选择操作系统类型,无需提供rememberMe Cookie
–漏洞类型Shiro721-需要选择操作系统类型,需要提供一个有效的rememberMe Cookie
–复杂Http请求-支持直接粘贴数据包
–可以手工指定特定的 Key 和 Gadget,默认不指定,会遍历所有的 Key 和 Gadget
…
3)此处,直接使用工具检测 Shiro-550 漏洞,在目标地址的位置输入要检测的URL,点击下一步
4)选择漏洞检测方式,点击下一步
由于该服务器不出网,所以选择回显进行检测
各个漏洞检测方式说明:
① 选择使用 ceye.io 进行漏洞检测
- 可以不进行任何配置,配置文件中已经预置了 CEYE 域名和对应的 Token,当然也可以对其进行修改。
- 程序会首先使用 URLDNS 筛选出唯一 Key,然后依次调用各个 Gadget 生成 Payload
- 缺点:程序会使用 API:http://api.ceye.io/v1/records?token=a78a1cb49d91fe09e01876078d1868b2&type=dns&filter=[UUID] 查询检测结果,这个 API 有时候会无法正常访问,导致在这种方式下无法找到 Key 或者有效的 Gadget
② 选择 使用 dnslog.cn 进行漏洞检测
- 可以不进行任何配置,每次启动时程序会自动从 dnslog.cn 申请一个 DNS Record。
- 程序会首先使用 URLDNS 筛选出唯一 Key,然后依次调用各个 Gadget 生成 Payload
- 缺点:少数时候 dnslog.cn 会间隔较久才显示 DNS 解析结果导致程序无法找到 Key 或者有效的 Gadget,且 dnslog.cn 只会记录最近的10条 DNS 解析记录
③ 选择 使用 JRMP + dnslog 进行漏洞检测
- 需要在 VPS 上通过命令java -cp ShiroExploit.jar com.shiroexploit.server.BasicHTTPServer [HttpSerivce Port] [JRMPListener Port]开启HttpService/JRMPListener,并按照要求填入相应 IP 和端口
- 如果开启 HttpService/JRMPListener 时未指定端口号,则 HTTPService 默认监听 8080 端口,JRMPListener 默认监听 8088 端口
- 使用 JRMP 的方式进行漏洞检测,可以显著减小 cookie 大小
- 程序会首先使用 URLDNS 筛选出唯一 Key,然后使用 JRMP 依次为各个 Gadget 生成对应的 JRMPListener
④ 选择 使用回显进行漏洞检测
- 针对不出网的情况进行漏洞检测,此时可以检测的 Gadget 类型会少于使用 DNSLog 方式的 Gadget类型
- 目前主要是通过将命令执行结果写入 Web 目录下然后读取的方式实现回显
- 需要提供一个静态资源 URL,程序会将此静态资源所在的目录当做写入目录
- 注:开始的时候使用 https://blog.csdn.net/fnmsd/article/details/106709736 介绍的方式实现回显,在本地可以测试成功,但是在实际环境中基本不成功(可能是我的姿势有问题,欢迎探讨),所以目前是通过读写文件的方式实现回显,后期可能会加入其它方式
5)等待检测结果
- 程序在判断目标应用是否存在漏洞时,窗口上部的输入框无法进行输入。
- 当程序检测出目标应用存在漏洞时,输入框可以进行输入并执行命令。
a.如下图,则检测到了目标存在Shiro反序列化漏洞
b.若没有漏洞,则弹窗显示不存在漏洞:
工具二:shiro_attack-2.2
1)工具下载:shiro_attack-2.2
2)下载成功,双击jar,打开工具运行界面
3)配置进行检测
输入目标url,可以选择是post还是get。可以指定密钥可以爆破。可以爆破利用链及回显方式。下面有检测日志,命令执行,内存马等选项进行配置
补充说明
我在测试过程中,有时候用ShiroExploit没检测出来,但是用shiro_attack却检测出来了。建议两种工具都检测下。
当然了,最靠谱的还是升级shiro版本来避免该漏洞的发生!
以上是关于Shiro漏洞检测的主要内容,如果未能解决你的问题,请参考以下文章
Shiro又爆高危漏洞,Apache Shiro身份验证绕过漏洞安全风险通告