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, (^^ゞ