Hello there, ('ω')ノ
セキュリティ学習用ツールWebGoatは、セキュリティ脆弱性を理解し、それを修正するスキルを習得するための学習環境を提供します。また、今回は補助ツールとしてWiresharkやcurlも使用します。
環境の準備
1. 必要なツール
- Docker: WebGoatや関連アプリケーション(WebWolf、crAPI)を簡単にセットアップ可能。
- Wireshark: ネットワークトラフィックをキャプチャして、API通信の内容を分析。
- curl: HTTPリクエストを送信するためのコマンドラインツール。
2. インストールと起動
- WebGoatとWebWolfをDockerでセットアップします。WebGoatのログインページは通常、
http://localhost:8080/WebGoat/loginでアクセスできます。 - WebWolfは
http://localhost:9090/homeにアクセスします。
パッシブリコンの制限
WebGoatやcrAPIは、学習用にAPIドキュメントが公開されていないことが多いです。そのため、パッシブリコン(公開情報の収集)はほとんど行えません。ただし、トラフィックキャプチャを活用して内部の挙動を理解することができます。
Wiresharkを使ったトラフィックキャプチャ
1. 設定
- ループバックインターフェイスでトラフィックキャプチャを開始(
127.0.0.1)。 - フィルタを設定して、ポート8080のHTTPパケットのみをキャプチャします。
フィルタ式:
tcp.port == 8080 and http
2. WebGoatのログインページをロード
ログインページにアクセスすることで、トラフィックがキャプチャされます。
3. パスワードの可視性
Wiresharkでキャプチャされたパケットを見ると、ログイン時に送信されたパスワードが平文で見えることがわかります。WebGoatはデジタル証明書を適用していないため、通信が暗号化されていません。これは学習目的で意図的に設定されています。
curlを使ったエンドポイントのテスト
1. WebGoatの登録エンドポイントをテスト
Wiresharkの分析から、認証情報を生成するエンドポイントが/WebGoat/register.mvcであることが判明しました。このエンドポイントにcurlを使って直接リクエストを送ります。
コマンド例
curl -vslk http://localhost:8080/WebGoat/register.mvc
2. 出力の解析
デフォルトでは、curlはGETメソッドを使用します。このリクエストを送ると、以下のようなエラーメッセージが返されることがあります:
- エラー内容
リクエストがサポートされていない場合、アプリケーションがSpring Frameworkを使用していることや、関連するソースコードファイル(例:RequestMappingInfoHandler.java)の情報が含まれている場合があります。
学び
curlを使用してAPIエンドポイントの動作を検証することで、実装技術やフレームワークに関する有用な情報を収集できます。
まとめ
WebGoatを使用したAPIセキュリティの基本的な解析では、次のようなスキルを学べます:
- Wiresharkでトラフィックをキャプチャし、通信内容を分析する。
- curlを使用してエンドポイントに直接リクエストを送信する。
- エラーメッセージや通信内容から実装技術に関する情報を収集する。
これらのスキルを練習することで、APIセキュリティの基本をしっかりと身につけることができます。
Best regards, (^^ゞ