Shikata Ga Nai

Private? There is no such things.

認証機能のセキュリティ診断マニュアル(Authentication)

Hello there, ('ω')ノ

🎯 1. 認証に関する脆弱性とは?

認証(Authentication)は、ユーザの「本人確認」を行う仕組みです。 これが破られると、不正ログイン・アカウント乗っ取り・管理者権限の奪取などに直結します。

よくある認証の脆弱性例:

種類 説明
弱いパスワード制限 簡単なパスワードが使える/制限が甘い
ブルートフォース耐性なし 何度でもログイン試行可能
認証バイパス 入力改ざんなどでログイン成功するケース
多要素認証の欠如 OTPやメール認証などが未実装 or 回避可能
セッション管理不備 ログアウト後もセッションが有効、ID切り替えが可能など

🧭 2. チェックすべき画面・機能

ページ / 機能 チェックポイント
🔐 ログインフォーム 入力検証・認証方法・レスポンス
📝 新規登録 パスワードの強度、検証方法
🔄 パスワードリセット トークンの有効性、推測性
🛡️ 多要素認証(MFA) バイパスできるか、強制されているか
🔓 セッションの維持 Cookie/トークンの処理、期限、破棄タイミング

🧪 3. テスト項目とペイロード例

🔍 パスワード推測/ブルートフォース

テスト項目 内容
共通パスワード password, admin, 123456 などの使用可否
連続試行制限 連続で失敗してもロックされない
CAPTCHAなし botでも容易に自動試行できてしまう

🔓 認証バイパス

SQLインジェクション系(旧型Webアプリに多い)

Username: ' OR 1=1 --
Password: 任意

ヘッダ改ざん型

X-User-Id: 1

→ IDを直接指定してログイン状態を偽装できる場合あり


🎭 セッションハイジャック/固定

  • Cookieの sessionid, token を別のユーザに使い回せるか
  • ログアウトしてもトークンが使えるか
  • 他のユーザのIDをセッションIDにするとアクセスできるか

🔐 パスワードリセット関連

テスト項目 チェック内容
トークンの推測性 数値や連番になっていないか
トークンの期限 有効期限なし or 長すぎる
一度使ったトークンが再利用可能 リプレイ攻撃の可能性あり

🛠️ 4. 診断手順

  1. ログインフォームを観察し、入力値とレスポンスの挙動を確認
  2. 連続試行、パスワード使い回し、レスポンスの変化などを記録
  3. セッションが適切に扱われているか確認(ログアウト後など)
  4. CookieやTokenの改ざんによるアクセス制御チェック
  5. パスワード再設定・登録処理の脆弱性も確認

🔐 5. JWT認証を使っている場合

チェックポイント 内容
alg=none バイパス JWTの署名を無効化できてしまう場合
弱い署名鍵 HMACなどで secret などが使われていないか
トークン期限の管理 exp が適切か、有効期限なしのトークンに注意

⚠️ 6. 注意点・ベストプラクティス

内容 説明
レスポンスが変化するか観察 成功・失敗時のメッセージ差でユーザの有無が推測できる(ユーザ枚挙)
セッションCookieに HttpOnly, Secure 属性が付与されているか
再ログイン時、セッションが更新(Session Fixation対策)されているか
登録やログイン処理に予測可能なパラメータが含まれていないか

🧰 7. 補助ツール

  • Burp Suite(Repeater, Intruder, AuthMatrix)
  • Hydra / Medusa:ブルートフォース系の自動化
  • jwt.io:JWTの解析・検証
  • Postman:認証付きAPIの動作確認

📌 よく出てくるパラメータ名

  • username, password
  • sessionid, auth_token, jwt
  • reset_token, otp, mfa_code

✅ 診断のまとめチェックリスト

チェック項目 OK 問題あり
ブルートフォース制限あり
パスワードの最小要件
セッション固定不可
ログアウトでセッションが無効化される
パスワードリセットトークンが1回限り
JWTの署名方式が安全

Best regards, (^^ゞ