Lab 01〜02 のユーザ列挙で store_admin@example.com が会員と判明した。
うつろい EC のログインエンドポイント /login にはレート制限が未実装。よくあるパスワード(漏洩リストや辞書)を片端から試せば、パスワードを破れる。
舞台
Mission
パスワード辞書(よくあるパスワード上位30件)で store_admin@example.com のパスワードを破ってください。
攻撃の実行
待機中
(攻撃を開始すると試行ログが表示されます)
何が起きているか — シミュレーター解説
脆弱なサーバ実装(レート制限なし)
// PHP — ログイン処理
$user = User::findByEmail($_POST['email']);
if ($user && password_verify($_POST['password'], $user->password_hash)) {
$_SESSION['user_id'] = $user->id;
return ['status' => 'success'];
}
return ['status' => 'error', 'message' => 'メールアドレスまたはパスワードが正しくありません'];
// ↑ 失敗試行のカウントなし、IP/アカウント制限なし
パスワード辞書(攻撃者が使う一般的な候補)
password / 123456 / qwerty / password1 / admin welcome / monkey / login / abc123 / starwars ... (実際の漏洩データには数百万件の候補)
ヒント
正解(ネタバレ)
store_admin のパスワードは utsuroi2024(辞書の中盤に登録)。「辞書攻撃を開始」を押すと、辞書を順番に試行して数秒で発見されます。
うつろい EC の管理者は「会社名 + 年」というよくあるパターンのパスワードを使っており、業界辞書(各社の社名を含む) で簡単に破られる。実務では「自社名・サービス名・年・誕生日」をパスワードに含めることはレート制限あっても危険。
必要な前提知識
サイト側の対策