shiro反序列化漏洞
Apache Shiro是一个强大且易用的Java安全框架,执行身份验证、授权、密码和会话管理功能。某些版本存在反序列化漏洞,并在去年闹得很火,每每实战攻防演习中必会出现,基本一打一个准儿。目前网上有很多shiro反序列化漏洞的复现过程,但基本都是基于shiro550,即Apache Shiro
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
2、遍历组件
3、利用第1步中的AES秘钥和第2步中的组件生成反弹shell cookie
4、nc监听上述第3步中写的反弹shell端口,burpsuite中提交上述生成具备反弹shell的remenberMe cookie
5、提交成功,nc中即收到反弹的shell
shiro-721实战
Apache Shiro <= 1.4.1时存在该问题,实战中暂未遇到利用这种获取权限的,这里以docker环境测试。
<code>测试环境:Tomcat7 + shiro-1.4.1.war/<code>
1、由于漏洞利用需要一个合法的登录账号,这里利用账号正常登陆获取一个有效的rememberMe cookie,并记录下这个rememberMe的值。
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>
可以查看生产的payload.bin
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>
在成功后会生成带上述payload的rememberMe cookie。
4、将第3步跑出来的rememberMe cookie在burp中提交
5、接着查看服务器tmp目录查看,命令执行成功,即创建了111.txt文件。