這個 shiro 是有 WAF 的,具體的情況就是找得到 key,但是找不到鏈。
當 key 存在但是找不到鏈,抓包看看請求。
我所知的 shiro bypass 思路就從 rememberMe cookie 的長度,還有就是髒數據填充,waf 會解密 rememberMe cookie,解密後查看是否存在惡意行為,bypass 的策略就是防止 cookie 被解密,由於 shiro 的加解密方式用到的是 base64+aes,只需要再 payload 中加入某些特殊字符,即可繞過 waf,可用的字符為!、@、#(只要不出現 BASE 編碼中可能出現的字符就行)
先探測 WAF 規則
這是一個工具探測鏈的時候所發送的請求包,請求包為 GET 請求。
狀態無回顯。
判斷攔截 cookie 長度
rememberMe 存在,rememberMe=deleteMe 也存在。
那就可以確定一件事,WAF 確實攔截了 cookie 長度。
有可以縮小 payload 長度的,但是我不會,項目參考:https://xz.aliyun.com/t/10824
填充髒字符
填充髒字符後依然無回顯。
未知 Http 方法名繞 WAF
修改 GET 請求方法測試。
最後把請求修改為 XXX 之後即可執行成功。
註:
剛開始未知請求不可以,還是被 WAF 掉了,剛開始識別的 WAF 特性是:
1. 攔 cookie 數據過長
2. 攔純 POST
當時使用偽協議成功繞過,日後可以多試試,主要就是思路就是 fuzz 的過程。