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を手動で試す
- 対象システムのパラメーター付きURLを確認
例: https://intra.example.co.jp/profile?user=100
- 同じキーを追加してアクセス
例: https://intra.example.co.jp/profile?user=100&user=1
✅ 観察ポイント:
- 自分以外の情報が見えてしまわないか?
- システムの動作が通常と変わらないか?
実際のチェック手順② フォーム送信内容を変更
- F12キー → Networkタブ
- フォーム送信リクエストを確認
- パラメーター名をコピーし、同じキーを追加して再送信
例: 通常: user=100
改造: user=100&user=1
✅ 観察ポイント:
- 二重指定したことで結果が変わるか?
- エラーメッセージや不正動作が発生するか?
実際のチェック手順③ ツールを使った自動化
Burp Suite や OWASP ZAP などのプロキシツールを使えば:
- すべてのリクエストに対して同じキーを複数付けるテスト
- HPP自動検出機能を活用
といった操作も可能です。
社内システムでよくあるチェック対象
- 社内ポータルのプロフィールページ
- 勤怠管理システムの検索フォーム
- 経費申請システムの確認画面
チェックリストまとめ
- [ ] URLパラメーターで同じキーを複数指定してみたか?
- [ ] フォーム送信時のパラメーターを二重指定して再送信したか?
- [ ] システムの挙動や表示結果が変わらないか確認したか?
- [ ] 本番環境で試す場合は必ず許可を取ったか?
注意事項
- システムによっては動作が重くなる場合があるため、テストは慎重に
- 本番環境では事前確認と報告を必ず行うこと
まとめ
- パラメーター汚染は「同じ名前のパラメーターを複数指定するだけ」で発生する可能性
- 非エンジニアでもURLやフォーム送信内容を確認するだけで十分チェック可能
- 小さな操作ですが、大きなリスクにつながることもあるため必ず確認
Best regards, (^^ゞ