これは XSS をバイパスするのとよく似ており、どの HTML タグがフィルターで除外されているかを確認する必要があって。
今回は、どの既知の SQL コマンドがフィルターで除外されているかを確認したいと考えて。
ブラックボックス テストの観点からは、 AND 文字列と OR 文字列はフィルタリングされていますが、その論理記号 ( && と ||) はフィルタリングされていないことがわかり。 。
これらの文字列を特定することは、WAF バイパス プロセスの最初のステップで。
Atlas を使用して改ざんスクリプトを特定する
ツールの使用を提案している人もいます Atlas sqlmap 改ざん検出に。
4 年前に更新されましたが、依然として WAF バイパスの有効なオプションです。
私は個人的には、これをあまり使用していなく。
本当に多くの誤検知が発生する可能性があり、時間の無駄になるからで。
ただし、実際の動作を見てみましょう。
ご自身で判断してください。
改ざん提案のために Atlas を実行する前に、SQL インジェクション用の初期ペイロードを取得する必要があって。
自分で構築することも、sqlmap を使用することもでき。
sqlmap には冗長オプションがあり。
ペイロードを表示するには、詳細度を少なくとも 3 に設定する必要があります。
詳細レベルは最大 5 までありますが、それらのレベルでは必要のない多くの情報が得られて。
sqlmap の実行後にペイロードの 1 つをコピーする必要があって。
次に、それを Atlas ツールに貼り付ける必要があり。
python3 atlas.py -u 'target.com/endpoint.php?key=value' -p "<YOUR_PAYLOAD>" --random-agent -v
ご覧のとおり、多くの結果が得られましたが、そのうちの 1 つが機能するはずであることがわかっているため、それでも役に立ち。
全体として、これらの改ざんを 1 つずつチェックするのに多くの時間を費やすことに。 私が個人的に使用している、もっと良い方法があるので、ご紹介しましょう。
WAF バイパスのための sqlmap 改ざんスクリプトの調査
通常、ターミナルにはすべての sqlmap 改ざんを表示するためだけに用意された別のタブがあり。
それらをリストするには、次のコマンドを実行するだけで。
sqlmap --list-tampers
選択肢はたくさんありますが、AND 文字列と OR 文字列を論理演算子に置き換える必要があることを覚えておいて。
この場合に私がやりたいのは、 grep コマンドをいくつかの正規表現とともに使用してフィルタリングすることで。
sqlmap --list-tampers | grep -E " AND | OR "
すべてを選択するのではなく、そのうちの 2 つだけが除外されていることがわかり。 私たちの特定のケースでは、シンボリック 論理 改ざんスクリプトが最もうまく機能する可能性があります。
sqlmap -u 'http://k1t.uk/listproducts.php?cat=1' --random-agent --flush-session --technique=B --hostname --batch --tamper=symboliclogical
レート制限ルールのバイパス
これをやっていると、ブロックされた文字列をチェックし、それらをバイパスする方法を見つけるだけで、一日中遊んでしまう可能性があり。
実際のシナリオでは、次のような他の基本ブロックを実装できて。
同じ IP から指定したエンドポイントに送信されるリクエストの数を確認し。
この場合、そのエンドポイントが 10 秒あたり 10 件のリクエストを受信すると、IP はしばらくの間ブロックされて。
他の場合には、無期限にブロックされる可能性があって。
お勧めします この問題が発生した場合に備えて、 NordVPN を使用し、IP を切り替えることを。
そもそもブロックされたくない場合は、 -delay sqlmap と ghauri の両方で オプションを使用することをお勧めして。
各リクエストを送信する間隔を秒単位で指定できるため、Web サイトではより穏やかになり。
もちろん、sqlmap はかなり遅くなりますが、この場合、IP は問題なく使用できて。
ほなほな。