ソース:
訳:
Web アプリケーション ファイアウォールは、Web サイトを保護するための優れたソリューションではありますが、完璧ではなく。
これはリクエスト フィルタリング ルールによって作成された防御フレームワークですが、これらのルールは非常に単純で簡単に回避できる可能性があって。
SQL インジェクションに対する一般的な防御策とそれを克服する方法を見ていく。
準備
今回は、testphp.vulnweb.com Web サイトを例として使用し、中央にある CloudFlare ファイアウォールをプロキシとして使用し。
今度はターミナルに行き、攻撃側をチェックし。
SQL インジェクションに 2 つの一般的なツールを使用するため、ターミナルを 2 つに分割し。
ほとんどの侵入テスターによく知られているツールがsqlmap で。
もう 1 つはあまり知られていませんが、これも非常に優れています — ghauri 。
これらはどちらも SQL インジェクションの自動化に非常に適していて。
理想的には、HTTP リクエストをファイルまたは URL クエリ文字列としてこれらのツールのいずれかに渡し。
私の経験では、 sqlmap は ネットワーク上でより積極的ですが、より高速で。
欠点は、注意しないと IP が簡単にブロックされてしまう可能性があることで。
どのように動作するかを確認してみましょう。
でsqlmap が WAF プロキシ Web サイト k1t.uk まず、すぐに
お気づきのとおり、すぐに 403 エラーが 表示され、 CloudFlare が識別されて。
これは、 sqlmap が 独自の ユーザー エージェント をそのまま使用しているために発生し。
フラグを指定する必要があるため、これはかなり面倒な機能です –random-agent 毎回 。 一方、 ガウリには そんな必要はありません!
WAF を使用しない SQLi の検出
いよいよ SQL インジェクションを探すときが。
まず sqlmap そのために を使用しますが、 –random-agent フラグを付けます。 X で私をフォローしている 方は コマンドを共有していることに気づいたかもしれません 、私が特定のsqlmap 。
特に非常に興味深いコマンドの 1 つは、Web サイトをクロールするためのもので。
そうです。sqlmap は クローラーとしても使用できます。
を使用してみましょう でsqlmap クローラー コマンドの Web サイト WAF ではない元 。
意図的に脆弱なサイトであるため、この機能を使用しても SQL のものを見つけるのは非常に簡単で。
sqlmap -u testphp.vulnweb.com --random-agent --crawl=3 --forms --hostname --current-db --smart
上記のコマンドを分解してみて。
- -u は ターゲット URL を指定します。
- –random-agent は 、通常のユーザーのブラウザに似たランダムなユーザー エージェントを選択します。 これは、基本的な CloudFlare ユーザー エージェントのブロックを回避するのに役立ちます。
- –crawl=3 は、 クローラーがどの程度の深さまで移動するか (リンクの深さ) を指定します。
- –forms は 伝えます sqlmap に 、このツールが POST、PUT、または HTML FORM で見つかったその他のリクエストにデータを入力できることを 。 認証されたフローでテストしている場合、これは非常に危険である可能性があることに注意してください。 私は通常、ログイン フォームを表示するときにこれを使用し、sqlmap を使用してそれらをバイパスしようとしますが、深さは 1 です。
- –hostname と –curent-db — これらを使用して、SQL インジェクションが成功したかどうかを検証します。 SQL サーバーのホスト名と Web アプリケーションに使用されるデータベースが表示されます。
- –smart フラグは頻繁に使用するべきではありませんが、意図的に脆弱なアプリが存在することがわかって いる場合は、それだけで十分です。 ヒューリスティック チェックで脆弱性の可能性が高いとツールに通知された場合にのみ、SQL インジェクションを実行します。
このコマンドを実行すると、データベースが正常に利用されたことがわかって。
現在のデータベース名とホスト名が表示されて。
また、このエンドポイントで利用可能な SQL インジェクションのタイプも確認でき。
で特定された脆弱なエンドポイントをコピーしましょう。 sqlmap この記事全体で使用するため、
再度実行してみましょう sqlmap を 。
ただし、その特定のエンドポイントのみを WAF プロキシ URL k1t.uk を追加し に置き換え、 –random-agent フラグと –technique=T て、時間ベースの攻撃を試み。
sqlmap -u 'http://k1t.uk/listproducts.php?cat=1' --random-agent --technique=T
現時点では、攻撃も成功したことがわかり。
時間ベースの手法は本当にうまくいき。
–random -agent は、 シミュレートしました。 sqlmap リクエストを通常のブラウザからのものとして
単純な WAF ルールのバイパス
サイバーセキュリティ チームは sqlmap からのリクエストを確認し、単純な WAF ルールを導入することにした。
という単語を含むリクエストが多数あったため sleep 、誰かが次のルールを使用してそれをブラックリストに登録しようとし。