Skip to content

ne-develop/security_workshop

Repository files navigation

脆弱くん — Web セキュリティ演習アプリ

NE株式会社で実施した脆弱性勉強会の演習用リポジトリです。
意図的に脆弱な TODO アプリ「脆弱くん」を Docker でローカル起動し、実際に攻撃を体験しながら Web セキュリティの基礎を学びます。

詳細はSpeaker Deckの配布スライドを参照してください。

Warning

本リポジトリは教育目的のため、脆弱性を意図的に作り込んでいます。
インターネット公開環境・本番環境への展開は絶対に行わないでください。


勉強会の目的

  • 脆弱性知識の向上・インシデント対応力の強化
  • 攻撃手法を知ることで、守り方を学ぶ
  • セキュリティを「他人事」ではなく開発文化として根付かせる

「ツールの使い方」ではなく「攻撃者の思考法」を身につけることがゴールです。


学習内容

Burp Suite Community Edition を使いながら 4 つの攻撃シナリオを体験します。

# テーマ 概要
シナリオ ① 4バイト文字による認証バイパス MySQL の utf8mb3 と utf8mb4 の差異を突いた文字コード起因の認証回避
シナリオ ② Brute Force Attack(辞書攻撃) Burp Suite Intruder とパスワードリストを使ったログイン突破
シナリオ ③ IDOR(不正な直接オブジェクト参照) 認可チェック不備を突いて他ユーザーのデータを参照・改ざんする
シナリオ ④ RCE(任意コード実行) ファイルアップロード機能に PHP を送り込みサーバー上でコードを実行、機密情報を奪取する

シナリオ別 学習ポイント

① 4バイト文字による認証バイパス

  • MySQL の utf8 は実は utf8mb3(3バイトまでしか扱えない)
  • 4バイト文字(絵文字など)がパスワード末尾に付加されると DB 側で切り捨てが起き、意図しないパスワードで認証が通る
  • 「文字コードと認証処理の相互作用」という盲点を学ぶ

② Brute Force Attack

  • Burp Suite の Intruder 機能と辞書ファイル(SecLists より抜粋)を使用
  • ログイン試行制限がない実装の危険性を体験
  • 防御策:MFA・アカウントロック・強力なパスワードポリシー

③ IDOR

  • 認証(Authentication)と認可(Authorization)の違いを理解する
  • 「ログインしているから安全」ではないことを実感
  • パラメータ改ざん・API 改ざんによる他ユーザーデータへのアクセス
  • 防御策:すべてのリクエストでサーバー側の所有者確認を行う

④ RCE(任意コード実行)

  • 拡張子・MIME チェックなしのアップロード機能に PHP ファイルを送り込む
  • Web シェルとして機能させ、環境変数・DB 認証情報を奪取する
  • 防御策:拡張子制限・MIME チェック・実行領域の分離・WAF

技術スタック

役割 技術
言語 PHP 8.2
Web サーバー Apache 2.4
データベース MySQL 8.0
インフラ Docker / Docker Compose
演習ツール Burp Suite Community Edition

セットアップ

前提条件

  • Docker Desktop がインストール済みであること
  • Burp Suite Community Edition がインストール済みであること(ダウンロード

手順

# 1. リポジトリをクローン
git clone <repository-url>
cd security_workshop_public

# 2. コンテナを起動
docker compose up -d

コンテナ初回起動時に MySQL へのデモデータ投入が自動で行われます。

詳細な演習手順はこのファイルの上部に記載した、Speaker Deckのスライドを参照してください。


注意事項

  • 本アプリはローカル環境専用です。外部に公開しないでください。
  • 演習で生成されるアップロードファイル(src/public/files/todos/)は .gitignore により追跡対象外です。
  • 本演習で学んだ攻撃手法を、許可のないシステムへ使用することは禁止します。

ライセンス

MIT License — 詳細は LICENSE.txt を参照してください。

作者

  • Yudai Makishima
  • Kotone Sakurai

About

NE株式会社で実施した、セキュリティ勉強会で使用したリポジトリです。

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors