Summary
この記事では、Webアプリケーションファイアウォール(WAF)のバイパス方法について探求しています。このガイドは、セキュリティ専門家に向けた実践的で価値ある情報が満載です。 Key Points:
- WAFバイパスにおけるSQLMapの高度なオプション活用法を詳しく解説し、攻撃を自動化する手法を紹介します。
- ProxyChainsを使用してIPアドレスをマスキングし、WAFによるブロック回避の設定方法と効果的な使用法について説明します。
- Tamperスクリプトの機能や特性、効果的な組み合わせ技術についても触れ、自作スクリプトの基本知識も提供します。
WAFとは何か
今日の急速に進化するサイバーセキュリティの世界では、Webアプリケーションファイアウォール(WAF)が、SQLインジェクションなどの悪意ある入力からウェブサイトを保護する上で非常に重要な役割を果たしています。しかし、攻撃者や倫理的ハッカーは常に新しい手法を模索しており、その防御をテストしたり回避したりしようとしています。
設定に必要なツール
このガイドでは、SQLMap、ProxyChains、およびタマースクリプトを使用してWAF(Webアプリケーションファイアウォール)の防御をテストし評価する方法について説明します。これらのツールの設定方法や効果的な活用法を学ぶことで、セキュリティを評価するためのターゲットスキャンを行うことができるようになります。そして、倫理的なガイドラインやベストプラクティスに従いながら実施します。
### **WAFとは?**
Webアプリケーションファイアウォールは、WebアプリケーションへのHTTPトラフィックを監視し、フィルタリングするセキュリティシステムです。これにより、不正なペイロード(SQLインジェクションやXSSなど)からアプリケーションを保護します。
**WAFの特徴**
- リクエストフィルタリング
### **WAFとは?**
Webアプリケーションファイアウォールは、WebアプリケーションへのHTTPトラフィックを監視し、フィルタリングするセキュリティシステムです。これにより、不正なペイロード(SQLインジェクションやXSSなど)からアプリケーションを保護します。
**WAFの特徴**
- リクエストフィルタリング
Extended Perspectives Comparison:
トピック | 内容 |
---|---|
ProxyChainsの設定 | Torプロキシを無効化し、住宅用プロキシを追加。ランダムチェーンとクワイエットモードを有効化。 |
ダイナミックチェーン vs ストリクトチェーン | ダイナミックチェーンは1つのプロキシがオンラインであれば接続可能。ストリクトチェーンは全てのプロキシがオンラインでなければならない。 |
SQLMapとの組み合わせ | SQLMapとProxyChainsを使用してCloudflare WAFをバイパスする方法。タムパースクリプトも活用。 |
Nucleiツールによるスキャン | 大量のURLに対して瞬時にエラー型SQLインジェクションチェックを実施するためにNucleiツールを使用。 |
注意事項 | この情報は教育目的のみであり、必ず適切な認可が必要です。 |

CloudflareとModSecurityの理解
この設定を始めるにあたり、まず以下のものが必要です。- **SQLMap** - SQLインジェクションを自動化するための強力なツールです。また、ウェブアプリケーションファイアウォール(WAF)についても触れておきましょう。例えば、一般的なWAFとしてはCloudflareやModSecurity、AWS WAF、Impervaなどがあります。それぞれが持つ機能や特性を理解することで、より効果的に活用できるようになります。これには、地理的制限やレート制限、自分だけのルール作成といった要素も含まれています。
WAFがSQLインジェクションを防ぐ方法
- **ProxyChains** - トラフィックを複数のプロキシを通してルーティングします。
- **住宅用プロキシ** - 実際のユーザーを模倣し、検出を回避するのに最適です。
## **CloudflareとModSecurity WAFの理解**
- **Cloudflare**: 非常に人気のあるWAFで、署名や挙動、パターンに基づいてブロックします。
- **ModSecurity**: Apache/Nginx上で広く使用されているオープンソースのWAFです。強力なルールベースのフィルタリング機能があります。
## **WAFがSQLインジェクションを防ぐ方法**
WAFは、悪意のあるクエリに関連するパターンを検出することで機能します。例えば、特定の文字列や構文が含まれている場合、それが危険信号として認識されます。このような技術は、リクエストとレスポンスを解析し、不審な活動をリアルタイムで監視することによって成り立っています。また、ブラックリスト方式とホワイトリスト方式にはそれぞれ利点と欠点があり、それらを適切に組み合わせることでより効果的な防御策となります。
最近ではAIや機械学習技術も活用されており、新たな脅威への対抗手段として進化したWAFが登場しています。このような進歩により、高度なパターン認識能力が向上し、以前よりも迅速かつ正確に攻撃から保護できるようになっています。

XSSペイロードのテスト方法
SQLインジェクション(SQLi)に関連するキーワード、例えばUNIONやSELECT、DROPなどの利用について考えてみましょう。これらのペイロードやその回避方法について知識を持つことは重要です。また、リクエストの頻度や送信元IPアドレスも注目すべきポイントです。たとえば、SQLMapが「' OR 1=1 -」というペイロードを送信した場合、WAF(Web Application Firewall)は即座にそれを認識し、「403 Forbidden」やブロックページで応答するかもしれません。しかし、巧妙な難読化やIPのローテーションがあれば、こうした防御を回避できる可能性があります。
### **WAFに対するXSSペイロードのテスト**
次にXSS(クロスサイトスクリプティング)のテストについて見ていきましょう。まずはブラウザでHackBar拡張機能を開き、テストサイトのURLを読み込みます。そして試したいペイロードをパラメーターに貼り付けてみます。しかし、この時点でCloudflareがすぐにペイロードを検出し、その結果ブロックされてしまいました。同様にModSecurityでも同じ結果となり、ペイロードがエラーを引き起こしてリクエストが拒否されました。これは明らかにもっと高度なアプローチが必要だということです。
### **Ghauriによる初期リコン**
GhauriはMySQLデータベース向けの自動化されたSQLi検出ツールとして優れています。このツールではURLを提供するだけで脆弱なパラメーターをスキャンしてくれます。このケースでは、「id」パラメーターがブールベースのSQLインジェクションに対して脆弱であると最初に警告しています。
### **WAFに対するXSSペイロードのテスト**
次にXSS(クロスサイトスクリプティング)のテストについて見ていきましょう。まずはブラウザでHackBar拡張機能を開き、テストサイトのURLを読み込みます。そして試したいペイロードをパラメーターに貼り付けてみます。しかし、この時点でCloudflareがすぐにペイロードを検出し、その結果ブロックされてしまいました。同様にModSecurityでも同じ結果となり、ペイロードがエラーを引き起こしてリクエストが拒否されました。これは明らかにもっと高度なアプローチが必要だということです。
### **Ghauriによる初期リコン**
GhauriはMySQLデータベース向けの自動化されたSQLi検出ツールとして優れています。このツールではURLを提供するだけで脆弱なパラメーターをスキャンしてくれます。このケースでは、「id」パラメーターがブールベースのSQLインジェクションに対して脆弱であると最初に警告しています。
ProxyChainsの構成方法
数回試みた後、それは誤検知であると特定されます。ツールはツールであり、完璧ではありません。誤検知があったからといって、ターゲットが完全無欠というわけではありません。あなたはただ賢く対処する必要があります。この点で、手動テストやバイパス技術の重要性が際立ちます。
## **WAFバイパスのためのProxyChainsの設定**
次のコマンドを使用してProxyChainsの設定ファイルを開きます:
デフォルトでは127.0.0.1:9050経由でTorに設定されています。このローカルプロキシを無効にするために、#を使ってコメントアウトします。そして、以下の形式で住宅用プロキシを貼り付けます:
その後、動的チェーンオプションを無効にし、ランダムチェーンを有効にします。これによって複数のプロキシ利用時に信頼性が向上します。一つが失敗した場合でもProxyChainsは自動的に別のものへ切り替えてくれます。また、ツール使用時にはProxyChainsログを抑制するためにクワイエットモードも有効化しましょう。設定が完了したらファイルを保存してください。
## **WAFバイパスのためのProxyChainsの設定**
次のコマンドを使用してProxyChainsの設定ファイルを開きます:
sudo mousepad /etc/proxychains.conf
デフォルトでは127.0.0.1:9050経由でTorに設定されています。このローカルプロキシを無効にするために、#を使ってコメントアウトします。そして、以下の形式で住宅用プロキシを貼り付けます:
http <ipaddress> <port> [username] [password]
http <ipaddress> <port> [username] [password]
その後、動的チェーンオプションを無効にし、ランダムチェーンを有効にします。これによって複数のプロキシ利用時に信頼性が向上します。一つが失敗した場合でもProxyChainsは自動的に別のものへ切り替えてくれます。また、ツール使用時にはProxyChainsログを抑制するためにクワイエットモードも有効化しましょう。設定が完了したらファイルを保存してください。

ProxyChainsの動作確認
ダイナミックチェーン:すべての接続は、リストに表示される順序でプロキシを連結して行われます。この場合、少なくとも1つのプロキシがオンラインである必要があります。そうしないと、アプリにはEINTRが返されます。
ストリクトチェーン:こちらも接続はリストに従ってプロキシを連結しますが、この設定ではすべてのプロキシがオンラインでなければなりません。もし一つでもオフラインの場合、同じくEINTRがアプリに返される仕組みです。
ランダムチェーン:このモードでは、指定されたリストからランダムに選ばれたプロキシ(またはプロキシチェーン)を使用して各接続を行います。このオプションはIDSテストなどには非常に良い選択肢となります。また、この設定の場合、「chain_len」を2とすることも可能です。
クワイエットモード:ライブラリからの出力が無効になります。
ProxyChains の設定後、正しく動作しているか確認するために簡単な curl コマンドを実行すると良いでしょう。その際、高速かつ信頼性のあるプロキシサーバーを選ぶことで接続の安定性が向上します。そして「strict_chain」オプションを有効化することで、全てのリクエストが指定した順番で通過するようになります。またDNSリーク防止機能も取り入れると、安全性がさらに高まります。
SQLMapとProxyChainsの連携実演
まず、`proxychains`を使ってcurlコマンドを実行すると、次のようになります。
## **SQLMap + ProxyChains + Tamper Scripts の活用**
ここでは、SQLMapとProxyChainsおよび一部のtamperスクリプトを組み合わせてCloudflare WAF をバイパスできるか試してみましょう。以下のコマンドで実行します。
curl http://ipinfo.ioproxychains curl http://ipinfo.io/ip
このコマンド実行後に、リクエストごとに異なるIPロケーションからの応答が受信される場合、それはProxyChainsが住宅プロキシを介してトラフィックを正常にルーティングしていることを示しています。これこそ、レート制限を回避し、WAF(Web Application Firewall)をバイパスするために必要なことです。また、ブラウザで任意のウェブサイトにアクセスする際も、`proxychains firefox`コマンドを入力すればIPアドレスが変化するはずです。## **SQLMap + ProxyChains + Tamper Scripts の活用**
ここでは、SQLMapとProxyChainsおよび一部のtamperスクリプトを組み合わせてCloudflare WAF をバイパスできるか試してみましょう。以下のコマンドで実行します。
sqlmap -u 'url' --dbs --batch -p id --random-agent --tamper=between,space2comment --dbms mysql --tech=B --no-cast --flush-session --threads 10
これを見ると、SQLMapはCloudflareをうまくバイパスし、データベーステーブル名のダンプに成功しました。このようにして攻撃手法や設定方法について理解が深まります。
SQLインジェクション脆弱性の大量発見法
さあ、403エラーページのバイパス事例をいくつか見てみましょう。これに続いて、同じタムパースクリプトとProxyChainsを使ってModSecurityを回避してみます。成功裏に二つの異なるウェブサイトからデータベースのテーブル名を取得できたことがわかりますね。これは強力なWAFでも効果的にバイパスできることを示しています。
次に、SQLインジェクション脆弱性の大量発見についてお話ししましょう。このプロセスを拡張するために、まずはGoogle Dorkで似たようなサブドメインを特定します。そして、その結果からドメイン名だけを抽出し、きれいなリストとして保存します。
この後は、それらのドメインに対してwaybackurlsとgfパターン、uroを組み合わせて、受動的情報源からユニークなSQLパラメータURLを抽出します。
次に、SQLインジェクション脆弱性の大量発見についてお話ししましょう。このプロセスを拡張するために、まずはGoogle Dorkで似たようなサブドメインを特定します。そして、その結果からドメイン名だけを抽出し、きれいなリストとして保存します。
cat urls.txt | awk -F/ '{print $3}' | sort -u
この後は、それらのドメインに対してwaybackurlsとgfパターン、uroを組み合わせて、受動的情報源からユニークなSQLパラメータURLを抽出します。
効果的なスキャン手法
効果的なスキャン手法を強化するためには、まずノイズを減らすことが重要です。大量のURLに対して一度にテストを行うのは効率的ではないので、この正規表現を使って各ドメインごとに一つのSQLパラメータURLのみを取得し、幅広い資産から脆弱なターゲットを迅速に特定する方法があります。
次に、Nucleiツールを使用してSQLiテンプレートでスキャンします。これによって、数千のURLに対して瞬時にエラー型SQLインジェクションチェックが実行されます。このプロセスは非常に高速なので、大量のURLでも短時間で結果が得られます。
ProxyChainsとSQLMapの組み合わせは、WAF(Web Application Firewall)を回避するための強力なコンビネーションです。住宅用プロキシやタムパースクリプトを利用すると、CloudflareやModSecurityなどの厳しいWAFも容易に突破できます。この設定が強力なのは、テスト作業を効率化し、自動化できることで、本当に重要な問題発見へ集中できるようになる点です。
注意事項として、この情報は教育目的および情報提供のみであり、セキュリティ評価を行う前には必ず適切な認可が必要です。この情報は責任持って利用してください。
次に、Nucleiツールを使用してSQLiテンプレートでスキャンします。これによって、数千のURLに対して瞬時にエラー型SQLインジェクションチェックが実行されます。このプロセスは非常に高速なので、大量のURLでも短時間で結果が得られます。
ProxyChainsとSQLMapの組み合わせは、WAF(Web Application Firewall)を回避するための強力なコンビネーションです。住宅用プロキシやタムパースクリプトを利用すると、CloudflareやModSecurityなどの厳しいWAFも容易に突破できます。この設定が強力なのは、テスト作業を効率化し、自動化できることで、本当に重要な問題発見へ集中できるようになる点です。
注意事項として、この情報は教育目的および情報提供のみであり、セキュリティ評価を行う前には必ず適切な認可が必要です。この情報は責任持って利用してください。
Reference Articles
タグ一覧(アルファベット順)【直近1年間/上位 ...
ページ容量を増やさないために、不具合報告やコメントは、説明記事に記載いただけると助かります。 対象期間: 2020/01/13 ~ 2021/01/12, 総タグ数: ...
Source: QiitaCyber Security News
... WAF Bypass Masterclass: Using SQLMap with Proxychains and Tamper Scripts Against Cloudflare &…A hands-on guide to understanding and testing WAF evasion ...
Source: lizedin.net
Related Discussions
最近、WAFについての話題をよく目にしますが、子供たちには難しい内容かもしれませんね。もう少し簡単に説明してもらえたら嬉しいです。どんなツールを使うのかも気になります!
こんにちは!WAFやSQLインジェクション対策についての情報、すごく興味深いですね。もし可能なら、関連するリソースや実践的な例を共有していただけると嬉しいです。国際的な視点から学ぶことができれば、更に理解が深まります!よろしくお願いします。
WAFについての情報、すごく参考になります!CloudflareとModSecurityの具体的な使い方についてもう少し詳しく教えてもらえますか?特に設定方法が気になります。