Shikata Ga Nai

Private? There is no such things.

第32回 パラメーター汚染:複数パラメーターの動作を試す

Hello there, ('ω')ノ

パラメーター汚染とは?

本来URLやフォームのリクエストでは:

https://intra.example.co.jp/search?user=100

のようにパラメーターが1つずつ指定されますが、意図的に:

https://intra.example.co.jp/search?user=100&user=200

のように同じキーを2回以上使った場合、システムによっては:

  • 最初の値を採用
  • 最後の値を採用
  • どちらか不定

となる場合があります。これを悪用できる可能性があるのがHPPです。


どんな問題が起こるのか?

✅ 一般社員が管理者情報を見えてしまう

✅ 本来無効な操作ができてしまう

✅ セキュリティチェックを回避できてしまう

など、シンプルながら重大なリスクになることもあります。


実際のチェック手順① URLを手動で試す

  1. 対象システムのパラメーター付きURLを確認

例: https://intra.example.co.jp/profile?user=100

  1. 同じキーを追加してアクセス

例: https://intra.example.co.jp/profile?user=100&user=1

✅ 観察ポイント:

  • 自分以外の情報が見えてしまわないか?
  • システムの動作が通常と変わらないか?

実際のチェック手順② フォーム送信内容を変更

  1. F12キー → Networkタブ
  2. フォーム送信リクエストを確認
  3. パラメーター名をコピーし、同じキーを追加して再送信

例: 通常: user=100

改造: user=100&user=1

✅ 観察ポイント:

  • 二重指定したことで結果が変わるか?
  • エラーメッセージや不正動作が発生するか?

実際のチェック手順③ ツールを使った自動化

Burp Suite や OWASP ZAP などのプロキシツールを使えば:

  • すべてのリクエストに対して同じキーを複数付けるテスト
  • HPP自動検出機能を活用

といった操作も可能です。


社内システムでよくあるチェック対象

  • 社内ポータルのプロフィールページ
  • 勤怠管理システムの検索フォーム
  • 経費申請システムの確認画面

チェックリストまとめ

  • [ ] URLパラメーターで同じキーを複数指定してみたか?
  • [ ] フォーム送信時のパラメーターを二重指定して再送信したか?
  • [ ] システムの挙動や表示結果が変わらないか確認したか?
  • [ ] 本番環境で試す場合は必ず許可を取ったか?

注意事項

  • システムによっては動作が重くなる場合があるため、テストは慎重に
  • 本番環境では事前確認と報告を必ず行うこと

まとめ

  • パラメーター汚染は「同じ名前のパラメーターを複数指定するだけ」で発生する可能性
  • 非エンジニアでもURLやフォーム送信内容を確認するだけで十分チェック可能
  • 小さな操作ですが、大きなリスクにつながることもあるため必ず確認

Best regards, (^^ゞ