这个shiro是有WAF的,具体的情况就是找得到key,但是找不到链。

image

当key存在但是找不到链,抓包看看请求。

我所知的shiro bypass思路就从rememberMe cookie的长度,还有就是脏数据填充,waf会解密rememberMe cookie,解密后查看是否存在恶意行为,bypass的策略就是防止cookie被解密,由于shiro的加解密方式用到的是base64+aes,只需要再payload中加入某些特殊字符,即可绕过waf,可用的字符为!、@、#(只要不出现BASE编码中可能出现的字符就行)

先探测WAF规则

image

这是一个工具探测链的时候所发送的请求包,请求包为GET请求。

状态无回显。

判断拦截cookie长度

image

rememberMe 存在,rememberMe=deleteMe也存在。

那就可以确定一件事,WAF确实拦截了cookie长度。

有可以缩小payload长度的,但是我不会,项目参考:https://xz.aliyun.com/t/10824

填充脏字符

image

填充脏字符后依然无回显。

未知Http方法名绕WAF

修改GET请求方法测试。

最后把请求修改为XXX之后即可执行成功。

image

image

image

注:

刚开始未知请求不可以,还是被WAF掉了,刚开始识别的WAF特性是:

1.拦cookie数据过长

2.拦纯POST

当时使用伪协议成功绕过,日后可以多试试,主要就是思路就是fuzz的过程。