实战shiro反序列化漏洞获取目标权限(550和721)

shiro反序列化漏洞

Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理功能。某些版本存在反序列化漏洞,并在去年闹得很火,每每实战攻防演习中必会出现,基本一打一个准儿。目前网上有很多shiro反序列化漏洞的复现过程,但基本都是基于shiro550,即Apache Shiro

<= 1.2.4,鲜有针对shiro721的复现过程,当然也可能是因为其相对550而言较为鸡肋,但是基于对漏洞研究利用而言还是有必要验证一下。

shiro550反序列化漏洞利用:

<code>Apache Shiro <= 1.2.4,需要获取AES秘钥/<code>

shiro721反序列化漏洞利用:

<code>Apache Shiro <= 1.4.1,需要一个合法的登录账号,基于Padding Oracle attack来实现的攻击/<code>

shiro-550实战

Apache Shiro <= 1.2.4时存在该问题,这种有比较成熟的利用工具,可以遍历泄漏的AES秘钥以及使用的组件,然后直接打即可,也有人写了完全自动化的利用工具,网上很多,怎么方便怎么来。

1、遍历AES key

实战shiro反序列化漏洞获取目标权限(550和721)

2、遍历组件

实战shiro反序列化漏洞获取目标权限(550和721)

3、利用第1步中的AES秘钥和第2步中的组件生成反弹shell cookie

实战shiro反序列化漏洞获取目标权限(550和721)

4、nc监听上述第3步中写的反弹shell端口,burpsuite中提交上述生成具备反弹shell的remenberMe cookie

实战shiro反序列化漏洞获取目标权限(550和721)

5、提交成功,nc中即收到反弹的shell

实战shiro反序列化漏洞获取目标权限(550和721)

shiro-721实战

Apache Shiro <= 1.4.1时存在该问题,实战中暂未遇到利用这种获取权限的,这里以docker环境测试。

<code>测试环境:Tomcat7 + shiro-1.4.1.war/<code>

1、由于漏洞利用需要一个合法的登录账号,这里利用账号正常登陆获取一个有效的rememberMe cookie,并记录下这个rememberMe的值。

实战shiro反序列化漏洞获取目标权限(550和721)

2、利用ysoserial生成payload,这里测试在目标系统创建111.txt文件,其中CommonsBeanutils1是利用的组件,不同环境可能不一样,这个跟上面550是一样的

<code>java -jar ysoserial-0.0.6-SNAPSHOT-all.jar CommonsBeanutils1 "touch /tmp/111.txt" > payload.bin/<code>
实战shiro反序列化漏洞获取目标权限(550和721)

可以查看生产的payload.bin

实战shiro反序列化漏洞获取目标权限(550和721)

3、执行exp,利用padding Oracle attack生成执行命令cookie,需要用到第1步中生成的rememberMe的值和第2步中生成的payload,该步骤会执行很长时间,过程类似盲注,测试时跑了近2个小时。

<code>python shiro_exp.py http://192.168.28.128:8082/samples-web-1.4.1/login.jsp "第2步合法rememberMe" payload.bin/<code>
实战shiro反序列化漏洞获取目标权限(550和721)

在成功后会生成带上述payload的rememberMe cookie。

实战shiro反序列化漏洞获取目标权限(550和721)

4、将第3步跑出来的rememberMe cookie在burp中提交

实战shiro反序列化漏洞获取目标权限(550和721)

5、接着查看服务器tmp目录查看,命令执行成功,即创建了111.txt文件。

实战shiro反序列化漏洞获取目标权限(550和721)


分享到:


相關文章: