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