はじめに
自分のWebサイト作ってるのに、セキュリティの話って「めんどくさいから後回し」で放置してない? そんな甘い考えでいると、ある日突然サイトが乗っ取られて「ようこそハッカーの遊び場へ♪」って書き換えられてるぞ。 冗談抜きでマジで起きるからな。
鏡里/CIO今回はWebサイトを狙った攻撃手法を紹介しますね



言っとくけど、これを他人のサイトで試したらただの犯罪者だからね!手錠かけられても私は何も知りません!ぷいっ!ぷいっ!
第1章:永遠の初心者マーク「インジェクション地獄」
~お前のコード、穴だらけだぞ~
「入力値を信じるな」って婆ちゃんに言われなかったか?
1. SQL Injection (SQLi)
- 解説: ログインフォームに
' OR '1'='1とか入力して、「パスワード合ってることにして!」とDBを騙す手口。 - 事件簿: 【PlayStation Network個人情報流出事件 (2011)】 ソニーがやらかした伝説の事件。7700万件のアカウントが流出。原因は既知の脆弱性の放置。SQLインジェクションなどでやられたと言われている。世界中のゲーマーを敵に回した瞬間である。
2. Cross-Site Scripting (XSS)
- 解説: 掲示板とかに
<script>alert('Baka')</script>を書き込んで、見た人のブラウザでスクリプトを実行させる。Cookie泥棒の常套手段。 - 事件簿: 【MySpace Samy Worm事件 (2005)】 19歳のサミー君が「僕のプロフィールを見た人は、自動的に僕と友達になり、プロフィールに『Samyは英雄』と書き込む」スクリプトを仕込んだ。20時間で100万人が感染。承認欲求の暴走が生んだ天才的犯行。
3. Command Injection
- 解説: アプリ経由でサーバーのOSコマンド(
rm -rf /とか)を実行させる。サーバーの所有権が移る瞬間。 - 事件簿: 【Shellshock (2014)】 Bash(シェルの基本機能)のバグ。HTTPヘッダーに変な文字列を入れるだけで、世界中のLinuxサーバーが乗っ取られ放題になった。「えっ、そこからコマンド打てるの?」という驚き。管理者は死んだ目でパッチを当てた。
4. Injection (General)
- 解説: 全てのインジェクションの総称。要は「データ」と「命令」を混同するから起きる。
- 教訓: ユーザー入力は「汚物」として扱え。消毒(サニタイズ・検証)なしで通すな。
第2章:誰でもウェルカム「ガバガバ認証・権限管理」
~鍵をかけずに外出するタイプか?~
「機能が動けばいい」で作った認証機能は、ハッカーへの招待状だ。
1. Broken Access Control
- 解説: URLの
admin=falseをtrueに書き換えたり、ID123を124に変えて他人のページを見る。 - 事件簿: 【Parlerデータ全抜き事件 (2021)】 SNS「Parler」で、投稿IDが連番だったため、順番にURLを叩くだけでテラバイト級のデータ(位置情報付き動画含む)をごっそり抜かれた。ハッキングですらない。「ウェブ魚拓」レベルの技術で崩壊。
2. Authentication Failures
- 解説: 「password」とか「123456」みたいなクソ雑魚パスワードを許容するシステム。
- 事件簿: 【SolarWindsサプライチェーン攻撃 (2020)】 米政府機関までやられた史上最大級のハッキング。発端の一つと言われているのが、アップデートサーバーのパスワードが 「solarwinds123」 だったこと。インターン生が設定したらしいが、チェックしない上司が戦犯。
3. OAuth Misconfiguration
- 解説: 「Facebookでログイン」の実装ミス。リダイレクト先を検証せず、アクセストークンを攻撃者に渡してしまう。
- 事件簿: 【Facebook大規模情報流出 (2018)】 「View As(プレビュー機能)」のバグとOAuthの不備を突かれ、5000万人分のアクセストークンが盗まれた。ザッカーバーグも真っ青。
第3章:怠惰の極み「設定・構成ミス」
~デフォルト設定で本番公開する勇気~
面倒くさがって設定をサボった結果がこれだ。
1. Security Misconfiguration
- 解説: 不要なポートが開いてる、エラー詳細が表示される、デフォルトのパスワードのまま。
- 事件簿: 【Miraiボットネット (2016)】 IoT機器(防犯カメラとか)が乗っ取られて大規模DDoS攻撃に加担。原因は、多くの機器が出荷時設定の 「ID: admin / Pass: admin」 のまま放置されていたから。お前の家の冷蔵庫が、スパムメールを送信しているかもしれない。
2. CORS Misconfiguration
- 解説:
Access-Control-Allow-Origin: *に設定して、どのサイトからでもAPI叩き放題にする。 - 現実: 開発中は便利だけど、本番で消し忘れて社内APIが世界中に公開されるあるある。「なぜか外部サイトからうちの顧客データが見れます」← 当たり前だ。
3. Subdomain Takeover
- 解説: AWSやHerokuで使っていたサブドメイン(
campaign.itti.comとか)の設定を削除したが、CNAMEレコード(DNS設定)を残したままにする。攻撃者がそのサービスで同じドメインを取得すれば、正規サイトになりすませる。 - 事件簿: トランプ大統領(当時)のキャンペーンサイトの一部などがこれで乗っ取られたことがある。立つ鳥跡を濁しまくり。
第4章:設計段階で詰んでる「ロジックと暗号の闇」
~後で直す? いいえ、作り直しです~
1. Cryptographic Failures
- 解説: パスワードを平文保存、あるいはMD5やSHA-1など既に破られた古い暗号を使う。
- 事件簿: 【Adobe大規模流出 (2013)】 1億5000万件のユーザーデータ流出。パスワードの暗号化方式(3DES-ECBモード)がショボすぎて、「同じパスワードの人は同じ暗号文になる」 状態だったため、クロスワードパズル感覚で解読された。暗号化のフリをした「置換暗号」遊びはやめろ。
2. Business Logic Flaws
- 解説: 「マイナス1個注文して返金処理」とか「クーポン適用後にカートの中身を増やす」とか、仕様の穴を突く。
- 事件簿: 【某コンビニ決済のバグ】 コンビニ決済番号を発行した後、支払わずにキャンセルを繰り返してポイントだけ増殖させる錬金術が流行ったことがある。プログラムは仕様通りに動いた。仕様がバカだっただけだ。
3. Race Conditions (TOCTOU)
- 解説: 「在庫チェック」と「購入処理」のコンマ数秒の隙間に、複数のリクエストをねじ込んで在庫以上に買う。
- 事件簿: 【Starbucks 無限コーヒー事件】 ギフトカード間の残高移動を2つのブラウザで同時に行うと、処理が競合して残高が減らずに移動だけ成功するバグがあった。魔法の財布かな?
第5章:サーバーを差し上げます「乗っ取り・インフラ破壊」
~お前のインフラ、俺の踏み台~
1. Remote Code Execution (RCE)
- 解説: 遠隔でサーバー上で好きなプログラムを実行できる。最強かつ最悪。
- 事件簿: 【Equifax個人情報流出 (2017)】 米国の信用情報機関。Apache Struts 2の脆弱性(パッチ出てたのに放置)を突かれ、1億4000万人の機微情報(社会保障番号など)が流出。「パッチを当てる担当者が休暇中でした」とかいう言い訳で株価大暴落。
2. Server-Side Request Forgery (SSRF)
- 解説: サーバーに「あそこのURL見に行って」と指示し、本来外部から見えない社内システムやクラウドの管理データ(メタデータ)にアクセスさせる。
- 事件簿: 【Capital One情報流出 (2019)】 WAFの設定ミス設定ミスとSSRFを組み合わせて、AWSのメタデータサービスにアクセス。1億人のクレジットカード申請データが盗まれた。クラウド時代の典型的かつ致命的なミス。
3. Software Supply Chain Failures
- 解説: 使っているライブラリやツール自体にウイルスが仕込まれる。
- 事件簿: 【Log4Shell (Log4j脆弱性) (2021)】 Javaのログ出力ライブラリ「Log4j」に、特定の文字列を送るだけで外部のコードを実行してしまう機能が見つかった。Minecraftのチャット欄に入力するだけでサーバー乗っ取り可能に。世界中のJavaエンジニアのクリスマスを破壊した悪夢。
第6章:最新トレンドと変態挙動「モダンWebの落とし穴」
~便利機能の裏にある罠~
1. API Mass Assignment
- 解説: ユーザー登録APIに
{"user": "itti", "role": "admin"}と勝手にパラメータを追加して送信したら、そのまま管理者権限で登録されちゃうやつ。 - 事件簿: 【GitHubハッキング (2012)】 Railsの仕様を突き、Egor Homakov氏がGitHubの公開リポジトリに勝手に自分の公開鍵を追加して見せた。「直して」って言っても無視されたから実力行使した例。「便利機能」は「セキュリティホール」の別名。
2. Zero-Click Exploits
- 解説: URLを踏ませる必要すらない。SMSを受信しただけ、着信しただけで感染。
- 事件簿: 【Pegasus (NSO Group)】 iMessageを受信するだけで感染するスパイウェア。ジェフ・ベゾス(Amazon創業者)のスマホもこれでハックされたと言われる。これ食らったら一般人は諦めてスマホを電子レンジに入れろ。
まとめ



ここまで読んでも「まあ、俺のサイトは大丈夫っしょw」とか思ってる人!めっ!
ハッカーは24時間365日、お前が寝ている間もツールを使ってドアノブをガチャガチャ回し続けてるんだよ。 完璧な防御なんてこの世に存在しないが、「鍵もかけずに外出する」のと「二重ロックして防犯カメラをつける」のでは、狙われる確率は天と地ほど違う。
Webサイトを公開するってことは、世界中からの攻撃を受け止める覚悟を持つってことだ。 「動けばいい」だけのコードはもう卒業しろ。自分の城(サイト)くらい、自分で守れ。










コメント