コース目次 / 第0章
はじめに — やられアプリを手元で起動する
旗艦コースの進め方と、練習相手になる自作やられアプリ shanai-memo を 127.0.0.1 で起動します。法と倫理ゲートもここで確認します。
このコースは、このトラックの旗艦です。ここまでの試食(サンドボックスの中)と違い、今回はあなたのパソコンの中で本物のサーバを動かし、そのサーバに空いた穴を、自分の手で攻めて・直して・もう一度攻めて確かめます。この往復こそ、脆弱性診断のいちばん基本の動きです。
相手になるのは、社内メモ帳をまねた架空のアプリ shanai-memo。わざと3つの穴(反射XSS・IDOR・オープンリダイレクト)を空けてあります。
この章は攻撃をしません。やられアプリを起動して、画面を眺めるところまでです。攻撃は次章から、法と倫理ゲートに同意した上で始めます。
まず線を引く
法と倫理ゲート
手を動かす前に
このコースは攻撃の技術に触れます。実習してよい相手は、次の3つだけです。
- (a) 自分で作った練習用のやられ環境(このサイトが配る自作ターゲット)
- (b) あなた自身の許可された環境(自分の Thousand SKY・secret-notes-ctf など)
- (c) CTF 競技の中(規約の範囲で)
実在する第三者のシステムを許可なく触ることは、不正アクセス禁止法に触れます。 このゲートは、その線引きを毎回の入口で確かめるためのものです。詳しくは「セキュリティの法と倫理」へ。
このコースで攻撃してよいのは、いま配る同梱のやられアプリ(a)だけです。実在する他人のサイトには、どんなに簡単な操作でも試しません。まだ「セキュリティの法と倫理」を通っていなければ、先にそちらを。
必要なもの
- Node.js 18 以上。ターミナルで
node -vと打って、バージョンが出ればOKです。追加のインストールは要りません(標準機能だけで動きます)。 - ターミナルを2つ開けること。1つはサーバを動かしっぱなしにし、もう1つで攻撃コマンドを打ちます。
やられアプリを受け取る
このコースのターゲット一式(ソースだけ)を ZIP で配っています。
解凍すると sec-web-basics/ というフォルダができます。中身はこうです。
sec-web-basics/
vulnerable/server.mjs 3つの穴が空いた版(あなたが直す対象)
vulnerable/data.mjs 架空のメモの種データ
exploit/xss.mjs 反射XSS の参照エクスプロイト
exploit/idor.mjs IDOR の参照エクスプロイト
exploit/open-redirect.mjs オープンリダイレクトの参照エクスプロイト
README.md
配っているのはソースコードだけです。実行ファイルは入っていません。あとで穴を直すために、vulnerable/server.mjs を自分で書き換えていきます。
起動する
1つ目のターミナルで、解凍したフォルダに入って起動します。
cd sec-web-basics
node vulnerable/server.mjs
こう表示されれば、起動しています。
[脆弱版] shanai-memo が http://127.0.0.1:4599 で起動しました。
⚠ 意図的に脆弱です。公開しないでください(127.0.0.1 の中だけで使う)。
ブラウザで http://127.0.0.1:4599 を開いてください。上に赤い帯で「意図的に脆弱・公開しないでください」と出た、社内メモ帳の画面が見えます。「alice でログイン」を押すと、alice としてログインした状態になります。
なぜ「127.0.0.1」なのか、なぜ「公開しない」のか
127.0.0.1(localhost)は、あなたのパソコンの中だけを指すアドレスです。この番地で動かしている限り、サーバは外のネットワークからは見えません。意図的に穴を空けたアプリを外(0.0.0.0 など)に公開すると、それは誰でも攻撃できる本物の踏み台になってしまいます。
このやられアプリには公開ガードが入れてあります。もし HOST=0.0.0.0 のように外向きで起動しようとすると、アプリ自身が起動を拒否します。「意図的に脆弱なものは、外に出さない」を仕組みで守るためです。
準備はこれで完了です。次章から、1つ目の穴——反射XSS——を攻めます。サーバは起動したままにしておいてください。
こうなっていればOK
卒業まであと4章です。
この章はまだ完了していません。
保存できませんでした(プライベートブラウズ中かもしれません)。この端末に進捗は残りませんが、先へは進めます。