この shiro は WAF を持っていますが、具体的な状況はキーを見つけることができますが、リンクを見つけることができません。
キーが存在するが、リンクが見つからない場合、パケットキャプチャを確認してください。
私が知っている shiro のバイパス方法は、rememberMe クッキーの長さと汚れデータの埋め込みです。WAF は rememberMe クッキーを復号化し、復号化後に悪意のある動作が存在するかどうかを確認します。バイパスの戦略は、クッキーの復号化を防ぐことです。shiro の暗号化および復号化方法は、base64+aes を使用しているため、特定の特殊文字をペイロードに追加するだけで WAF を回避できます。使用できる文字は!、@、#(BASE エンコーディングで使用される可能性のある文字が現れない限り、どの文字でも構いません)。
WAF ルールを最初に探知する#
これは、リンクを探知する際に送信されるリクエストパケットです。リクエストパケットは GET リクエストです。
ステータスにはフィードバックがありません。
クッキーの長さを判定する#
rememberMe が存在し、rememberMe=deleteMe も存在します。
それならば、WAF は確かにクッキーの長さをブロックしています。
ペイロードの長さを縮小できるものがありますが、私は知りません。プロジェクトを参考にしてください:https://xz.aliyun.com/t/10824
ダーティ文字を埋め込む#
ダーティ文字を埋め込んでもフィードバックはありません。
未知の HTTP メソッド名で WAF を回避する#
GET リクエストメソッドを変更してテストします。
最後にリクエストを XXX に変更すると、成功するようになります。
注:#
最初は未知のリクエストはできませんでしたが、WAF によってブロックされました。最初に認識した WAF の特徴は次のとおりです:
1. クッキーデータが長すぎる場合にブロックする
2. 純粋な POST をブロックする
当時、偽のプロトコルを使用して成功裏に回避しました。将来的には、試してみることができます。主なアイデアは、fuzz のプロセスです。