Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Burp_Suiteで学ぶ_はじめてのハッキング
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
NE株式会社
June 23, 2026
33
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Burp_Suiteで学ぶ_はじめてのハッキング
NE株式会社
June 23, 2026
More Decks by NE株式会社
See All by NE株式会社
NE株式会社 - CULTURE BOOK
neinc
0
6.1k
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Facilitating Awesome Meetings
lara
57
7k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
3.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Scaling GitHub
holman
464
140k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
800
Building the Perfect Custom Keyboard
takai
2
810
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
The Mindset for Success: Future Career Progression
greggifford
PRO
0
410
Code Reviewing Like a Champion
maltzj
528
40k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
Transcript
Burp Suiteで学ぶ はじめてのハッキング ~ レッドチーム的アプローチから学ぶ Webアプリの壊し方と守り方 ~ 2026/03/26 NE株式会社 セキュリティチーム
巻嶋雄大 テックリード室 櫻井思寧 © 2026 ne-inc
前提 • 本資料はNE株式会社の社内勉強会で使用したものを、 外部公開用として再構成したものです。
免責事項 • 本ワークショップでは一部に具体的な攻撃手法を含みます。 • 管理者の許可なく第三者のシステムに対して実施した場合、不正アク セス禁止法その他の法令に抵触する可能性があります。 • 本資料の利用により生じたいかなる損害についても、 NE株式会社は一切の責任を負いかねます。
利用にあたって • 本資料のうちNE株式会社が著作権を有する部分については、学習・教育目的に限り 利用・改変が可能です。ただし、営利目的での利用はできません。また、NE株式会社 および第三者が権利を有するロゴ、商標、意匠等は対象外です。 • 本資料には第三者サービスのスクリーンショットおよび引用情報が含まれます。各権 利はそれぞれの権利者に帰属します。 • 本教材に登場するユーザー名、パスワード、日時、認証情報等はすべて学習用の模
擬環境における架空の情報です。
この会の目的 • 短期目的 ◦ 脆弱性に関する知識レベルを底上げし、日常実務で活かすこと ◦ インシデント発生時や脆弱性発見時の対応力強化 • 長期目的 ◦
セキュリティ意識の向上、リスクを未然に防ぐ文化の醸成 ◦ 最新の脆弱性動向のキャッチアップ ▪ CVE、OWASPのTOP10など
オープニング
本日のアジェンダ (計90分) 1. Burp Suiteについて 2. 攻撃シナリオ①:4バイト文字による認証バイパス 3. 攻撃シナリオ②:brute force
attack 4. 攻撃シナリオ③:IDOR 5. 攻撃シナリオ④:RCE(任意コード実行) 6. 脆弱性を発見するために
今日は皆さんに 「悪い人」になってもらいます
セキュリティ対策には2つのアプローチがあります • レッドチーム ◦ 攻撃者視点で考える人 ◦ 実際に侵入できるか?を調査するセキュリティ部隊 • ブルーチーム ◦
防御視点で考える人 ◦ どうやって守るか?を調査するセキュリティ部隊 セキュリティ対策のアプローチ
攻撃方法を知らないと 守り方もわかりません
今日は 「レッドチーム的アプローチ」と それに役立つツールを学びます
この勉強会では Burp Suite Community Edition を使います
模擬環境で システムの穴を見つけるための 思考方法を学んでいきましょう
• Burp Suite Community Edition のインストール ◦ https://portswigger.net/burp/communitydownload • 模擬環境のcloneと、docker-compose
up ◦ https://github.com/ne-develop/security_workshop ▪ 上記をcloneした後、docker-compose up -dを実行 事前準備
• このワークショップでは、 実際の攻撃者と同じ条件で挑戦してもらいます • 配布されたソースコードは、講義終了まで閲覧禁止です ◦ ソースコードをみると答えがわかってしまいます。 注意事項
Burp Suiteとは Burp Suite Community Editionの公式サイト(PortSwiggerより) https://portswigger.net/burp/communitydownload
• ペネトレーションテスト (侵入テスト) のためのツール ◦ PortSwiggerが提供 • Community Edition ◦
無料版、機能制限あり • Professional Edition ◦ 有料版、豊富な機能追加 Burp Suiteとは
• まずは無料版を使ってみましょう ◦ 無料版でもコアな機能は使えます • 今回紹介する機能 ◦ Proxy ◦ Intruder
◦ Repeater Burp Suiteとは
まずはチュートリアル
早速Burp Suite Community Editionを開いてください 早速使ってみよう
Next を押す
Start Burpを押す
Proxyを押す
Proxyとは • ブラウザとWebサーバーの間に入り、 HTTP通信を確認・編集できる仕組み • 簡単に入力改ざんできるのがBurp Suiteの強み
Open Browser を押します
組み込みの “Chromium” というブラウザが開きます
http://localhost:8800 httpsだと繋がらないので注意
新規登録 (サインアップ) を押します
お好きな内容で新規登録! IDとパスワードをメモしておく
ログイン画面に戻ります 正しいログインIDと あえて間違ったパスワードで ログインしてください
当然弾かれますね
次は Burp Suite を使います
再度正しいログインIDと あえて間違ったパスワードを入れる 「ログイン」を押さずに 次のページへ進んでください
ログインは押さないまま、Burp Suite を開きます
ログインは押さないまま、Burp Suite を開きます Intercept off をクリック Intercept on にする
この状態
Burp Suiteでinterceptになったら、 間違ったパスワードを入れたまま 「ログイン」を押す
画面が読み込み中のまま止まっていれば成功! ※ intercept:中断する、遮るという意味
Burp Suiteの画面に戻ると、 送信を保留されている リクエストが表示されます
RequestのPrettyタブを 一番下までスクロールします
一番下に、入力した内容がありました!
直接編集できるので 先ほど自分で設定した正しいパスワードに変更します。
Forwardを押すと リクエストが進む
ログインが成功 /todo にリダイレクトされた!
Interceptをoffに 戻しておきます
画面上では正しくないパスワードを入れたのに、 Burp Suiteでリクエストを改変したことで ログインができてしまいました!
チュートリアルまとめ このように、 1. 通信と通信の間に入りこんで 2. リクエストを編集して 3. 送信する これがBurp Suiteの基本的な使い方です
本日実験する 4つの攻撃 この Burp Suite を使って4つの攻撃を体験しましょう。 1. 4バイト文字による認証バイパス 2. brute
force attack 3. IDOR 4. RCE(任意コード実行)
セキュリティの学習サイトなどでは、 ヒントなしで問題にチャレンジするのが一般的です。 今回の勉強会では攻撃の方法を全て説明します。 一緒に手元でやってみてください。 慣れてきたら、最後に紹介する学習サイトなどで、 ぜひヒントなしでもチャレンジしてみてみましょう! セキュリティの学習方法について
一般的に、ペネトレーションテスト界隈の問題集では 「侵入した証拠」となる文字列 (flag) を取得し、 それを提出することで、問題の正解・不正解を判定します。 それにならって、脆弱くんの中に flag を埋め込みました! 「今日実験する4つの攻撃」にそれぞれ flagを設定し、
攻撃成功したら flag がわかるようにしています。 セキュリティの学習方法について
flag一覧 [flag1] adminユーザーが2026-02-21 09:58:07に作成したTODOのタイトルを取得せよ。 [flag2] yudaiのログインパスワードを特定せよ。 [flag3] 「保守担当 : A」が2026-02-25
15:12:03に作成したTODOのタイトルを取得せよ。 [flag4] DBのrootユーザーのパスワードを特定せよ。
flag一覧 [flag1] adminユーザーが2026-02-21 09:58:07に作成したTODOのタイトルを取得せよ。 [flag2] yudaiのログインパスワードを特定せよ。 [flag3] 「保守担当 : A」が2026-02-25
15:12:03に作成したTODOのタイトルを取得せよ。 [flag4] DBのrootユーザーのパスワードを特定せよ。 各攻撃ごとに、flagを回答できるタイミングになったらお知らせします!
攻撃シナリオ 1 : 4バイト文字による認証バイパス (utf8mb3に起因するトランケーション問題 ) 参考文献:徳丸浩の日記 https://blog.tokumaru.org/2015/06/column-sql-truncation-vulnerability.html
前提知識 MySQLのutf8は、 実はUTF-8の仕様を網羅しきれていません。 UTF-8のバイト数は可変長です。 文字によってバイト数が異なります。
1バイト:a, b, c たとえば
1バイト:a, b, c 2バイト:é, ¢, Ā たとえば
1バイト:a, b, c 2バイト:é, ¢, Ā 3バイト:あ, 亜, 漢, 髙(※意外と「はしご髙」は3バイト)
たとえば
1バイト:a, b, c 2バイト:é, ¢, Ā 3バイト:あ, 亜, 漢, 髙(※意外と「はしご髙」は3バイト)
4バイト: たとえば 後からUTF-8に 足されたものは4バイト
よく使われる文字(全世界の頻出文字)は、 3バイトまでの少ない容量で扱える ↕ 一方、あまり使わない文字でも、容量を多く使えば表現できる という優れた設計になっています。 UTF-8の仕様
MySQLの"utf8"は、実は"utf8mb3"のエイリアスです。 ↓ MySQLの"utf8"は3バイトまで の文字に対応しています。 MySQLのutf8
MySQLの"utf8"は 歴史的経緯で残っている互換用の実装です。 (いわば「負の遺産」に近い存在) 新規で作るなら必ず"utf8mb4"にするべき です。 MySQLのutf8
以上のことから、4バイトの文字も入れたい場合は、 "utf8mb4"にする必要があります。 4バイトの文字をutf8に無理やり入れようとすると どうなるでしょうか? MySQLのutf8と脆弱性
設定によって以下のどれかになります (STRICT MODE設定・MySQL接続時の設定) ① エラーになって保存できない ② NGな文字が見つかる手前まで切り詰めて保存される ③ ? に置き変わる
MySQLのutf8と脆弱性
設定によって以下のどれかになります (STRICT MODE設定・MySQL接続時の設定) ① エラーになって保存できない ② NGな文字が見つかる手前まで切り詰めて保存される ③ ? に置き変わる
MySQLのutf8と脆弱性 もし②だった場合…?
「週末限定❤タイムセール❤」という文字列は? MySQLのutf8と脆弱性
「週末限定❤タイムセール❤」という文字列は? ↓ 「週末限定」だけになってしまいます MySQLのutf8と脆弱性
この挙動、 一見不便なだけに見えますが ...
重複判定 (ユニーク判定 ) がバグります
重複判定がバグるということは? セキュリティリスクは?
もしもユーザ登録なら ...?
$user_name = $_POST["user_name"]; if(isExists($user_name)) { return "すでに存在するユーザーです"; } $result =
$this->register($user_name);
$user_name = $_POST["user_name"]; if(isExists($user_name)) { return "すでに存在するユーザーです"; } $result =
$this->register($user_name); "admin😃"
$user_name = $_POST["user_name"]; if(isExists($user_name)) { return "すでに存在するユーザーです"; } $result =
$this->register($user_name); "admin"は存在するが "admin😃"は存在しないので 存在判定をすり抜ける
$user_name = $_POST["user_name"]; if(isExists($user_name)) { return "すでに存在するユーザーです"; } $result =
$this->register($user_name); "admin😃"を 登録しようとするが 切り落とされて "admin"になる
悪意あるユーザーによる admin成りすましが可能
このようにPHPとMySQLとで判定が乖離するため、 重複判定がバグります。 そのため、utf8mb3 × 非STRICT MODEは最悪のコンボです💥 4バイト文字による認証バイパス
では、この脆弱性を利用して adminユーザーのアカウントを奪取してみましょう😏 Let's 攻撃! 4バイト文字による認証バイパス
Burp Suiteの組み込みブラウザ Chromiumを使います 「脆弱くん」のTOPページを開きます http://localhost:8800
ログインID:admin パスワード:適当な値でOK 「ログイン」を押す
当然弾かれますね
「新規登録 (サインアップ) 」を押す
実はこのアプリも utf8mb3が使われています。 しかも、usersテーブルの login_idには ユニークキー制約がありません!
None
idしかユニークキー制約がない
1. admin (2つ目の😃アカウント) でログインして 2. admin (1つ目の真アカウント) のTODOリストを盗み見る ↓ 悪意あるユーザーに見られてはいけないものが見えてしまう!
今回やりたいこと
そこで早速 "admin😃" という アカウントを作ろうとしますが...
文字種のエラーで 登録ボタンが押せません
こちらのエラー判定を Burp SuiteのProxy機能を使って突破します ✊
しかし Burp SuiteのRequestに 絵文字を入れようとしても 文字化けしてうまく入りません
そこで実際に絵文字を入力されたとき Burp Suiteでどのように処理されるかを調べます
⚠ 注意 ⚠ 絵文字には3バイトと4バイトが混在しています。 今回は4バイトの絵文字を使いたいので 「😃脆弱くん😃」 ←これを使ってください。 😃は4バイト絵文字です。
ここに4bytes文字の😃があるので、 ログインIDにコピペします
脆弱くんがこの状態で、 Burp Suiteをinterceptする 「ログイン」を押す
😃は %F0%9F%98%83 で表せることがわかりました! Burp Suiteを見ると...
新規登録画面に戻ります ログインID:admin intercept:オン の状態で「登録する」を押します
login_idを "admin%F0%9F%98%83" に変更してforwardします Burp Suiteの画面で、
ここで、いま登録した 新しいパスワード (偽パスワード) で ログインを押すと...
adminユーザーとしてログインできてしまいました!!
flag1が回答可能になりました。 [flag1] adminユーザーが2026-02-21 09:58:07に作成した TODOのタイトルを取得せよ。 ※ 回答は最終ページにあります
意図的に攻撃しやすいように デモを作っただけでしょ〜?
ちがいます
徳丸浩の日記 「Column SQL Truncation脆弱性にご用心」 より https://blog.tokumaru.org/2015/06/column-sql-truncation-vulnerability.html 4バイト文字による認証バイパスの危険性 一意制約はふつうあるだろと思われるでしょうが、 CMS四天王の中で一意制約がついているのはDrupalのみで、 WordPress、Joomla、MovableTypeには一意制約が
ついていません。
とのことなので、古いWordPressのサイトなどでは、 今もこの攻撃が成立する可能性があります。 4バイト文字による認証バイパスの危険性
4バイト文字による認証バイパス対策の一例 • utf8をutf8mb4に変更する • SQLモードをstrictモードにする [対策] どうしたらいいか
攻撃シナリオ 2 : パスワード破り (brute force attack) 参考文献: OWASP TOP10:2025/A07:2025
Authentication Failures A07:2025 Authentication Failures CWE-521: Weak Password Requirements https://cwe.mitre.org/data/definitions/521.html 日経 X Tech: 危険なパスワードのランキングから分かる弱さの共通点、強固でも使い回しは避けよう https://xtech.nikkei.com/atcl/nxt/column/18/02676/120500016/
ブルートフォースアタックとは 考えられるパスワードを自動ツールで次々と送信し、 正しい組み合わせがヒットするまで、 総当たりで突破を試みる攻撃のことです。
原始的には、 aaaaa → aaaab → aaaac → … のように全ての組み合わせを順番に試して、 総当りでパスワード探索します。
しかしこれでは効率が悪いです。 ブルートフォースアタックとは
たとえば、セキュリティの勉強をしていない人で 7!Kd6MmG のようなパスワードを選択する人は多くありません。 多くの人は、覚えやすい・短い・打ちやすい といった パスワードを好みます。 ブルートフォースアタックとは
そのため、誰もが無意識に選ぶパスワードには、 必然的に偏りが生じます。 つまり、ある程度パスワードを収集しておいて、 それを上から試していけば、そこそこの確率で通ることになります。 これが「パスワードリスト攻撃」です。 ブルートフォースアタックとは
また、言語に由来する部分もあります。 たとえば、日本語話者ならこういったものが想像できます。 ブルートフォースアタックとは
• 苗字+アカウントを作った年月 ◦ suzuki2026、tanaka25、kobayashi202603 など • 名前+誕生日 ◦ taro1225、hanako1010、jiro33 など
• 苗字+覚えやすい数字 ◦ suzuki123、tanaka555、kobayashi5525 など • 人気なローマ字英語 ◦ sakura、tokyo、yokohama、pokemon、mario、onepiece など 日本語話者に多いパスワード
• 電話番号 ◦ 0311112222 など • 郵便番号 ◦ 2220000 など
• 車のナンバー ◦ 1234、yokohama-1234 など → 秘密ではない、誰でも知り得る情報をパスワードにするパターン その他よくあるパスワード
世界的によく使われるパスワードのコレクション 「SecLists」というのもあります。 ▼SecLists 10k-most-common.txt https://github.com/danielmiessler/SecLists/blob/ master/Passwords/Common-Credentials/10k-most-common.txt SecLists ※世界でよく使われるパスワードランキング TOP20 →
今回は、SecListsの 10k-most-common.txt (世界中で最もよく使われるパスワード1万選)を使って、 パスワードリスト攻撃を体験してみましょう。 体験してみよう
事前にcloneをお願いしていた security_workshop_2 ディレクトリから、 攻撃シナリオ2で使うデータ/SecLists-50-most-common.txt を使います。 本体は10000行ありますが、今回はお試しということで、 上から50個だけとってきたものを抜き出しています。 体験してみよう
「脆弱くん」に戻ります。 yudai というログインIDのアカウントがあります。 パスワードを特定してみましょう 体験してみよう
そういえばadminのTODOに 「パスワードポリシー厳しくしたらクレームが来たので、緩める」 とありましたね! どうやらこのシステムは 弱いパスワードを許しているようです。 総当たり攻撃の余地がありそうです。 試してみましょう💪 ヒント
ログインID:yudai パスワード: (なんでもOK) Burp Suiteでinterceptしてから 「ログイン」を押す
②Send to Intruder をクリック ①対象プロセスを 右クリック
Intruderを クリック
さっき入力したパスワードが 書いてある箇所を探します 下の方にあります
選択します
Add§を押します ※§はセクション記号です。 滅多に使わない文字を区切り記号にしてるだけで、記号自体に意味はありません。
この状態になっていればOK
Settingsを押します
Grep - Extract にある Add を押す
同じように 入れます
Payloadsを選択 loadをクリック
SecLists-50-most-common.txt を選択
ズラリとパスワードが 入ればOK
Start attackを押す
Burp Suiteの有料版の 紹介が出るので OKを押す
別ウィンドウ が開き、自動でログインを試行する様子が見えます
「Location: 」はログインボタンを押した後の遷移先です
flag2が回答可能になりました。 [flag2] yudaiのログインパスワードを特定せよ。 ヒント:一つだけ違うLocationになっているはず、探してみましょう! ※ 回答は最終ページにあります
取得したパスワードで 本当にログインができるのか、 確認してみましょう
ブルートフォースアタック対策の一例 • 簡単すぎるパスワードを許可しない • 多要素認証 (MFA) を有効にする [対策] どうしたらいいか
攻撃シナリオ 3 : 権限すり抜け (IDOR) 参考文献: OWASP TOP10:2025 / A01:2025
Broken Access Control: https://owasp.org/Top10/2025/A01_2025-Broken_Access_Control/
先ほど奪取したパスワードで ログインしてみます
このアプリの開発者であるyudaiの TODOを見てみましょう 何かヒントがあるかもしれません👀
None
None
こういうクエリになっていそう🤔 と簡単に予測できる。 権限すり抜けが発生するロジック SELECT * FROM todos WHERE id =
:id;
おそらくDBはこういう構造で 複数ユーザーのTODOが 同じテーブルに混在しているのでは?
WHEREがidだけで本当に大丈夫??? 権限すり抜けが発生するロジック SELECT * FROM todos WHERE id = :id;
全然大丈夫じゃないです 🖐
攻撃してみましょう
Burp SuiteのinterceptをONにしてから「詳細」ボタンを押します
非同期通信が 途中で割り込まれるため、 中途半端に描画されます
"todo_id":7 というのを確認 ここが連番なことが予測できます Burp Suiteで "todo_id"を7から12に変更して forwardしてみましょう
なんと別ユーザーのTODOが表示できてしまいました!!
このように 本来アクセス権のない別ユーザのリソースに アクセスできてしまう脆弱性を IDOR (Insecure Direct Object Reference) と呼びます
そんなん知ってるよ!わかってるよ! と思ったそこのあなた
IDORは身近な不具合ですが、発生すると重大なセキュリティ事故につなが ることがあります。 「IDOR」という言葉を知っているだけでも設計やレビュー時の気づきにつな がるので、ぜひ覚えておいてください。 IDORについて
ところで 櫻井さんの TODO LISTは これ一つではないはずです 😏
Proxyで1回1回止めても良いですが もっと効率よくテストできます やってみましょう!
もう一度Burp SUiteのinterceptで止めてから「詳細」ボタンを押します
Burp Suiteで プロセスを右クリック Send to Repeaterを押す
Repeater を押す
Requestの Prettyを押します
Burp Suiteで todo_idを12→14に変更しましょう
Sendを押します
違う人のTODOが 見えてしまいました
Burp Suiteで todo_idを14→15に変更しましょう
Sendを押します
また違うTODOが 出てきました
Repeaterを使うと ちょっと変える→確認する、ちょっと変える→確認する が簡単に何度もできます。 Burp SuiteのRepeater機能
flag3が回答可能になりました。 [flag3] 「保守担当 : 櫻井」が2026-02-25 15:12:03に作成した TODOのタイトルを取得せよ。 ※ 回答は最終ページにあります
ここまで3種類の攻撃手法と 3つのツールの使い方を学んできました
では、Burp Suiteだけで すべての脆弱性を見つけることは できるでしょうか?
残念ながらできません
Burp Suiteが扱えるのは HTTP通信 (リクエスト/レスポンス) のみです。 Burp Suiteは強力なツールではありますが、 「何でも見つけられる銀の弾丸」ではありません。 Burp Suiteの領域
では最後に
Burp Suiteだけでは検出しきれない ロジックバグによる重大な脆弱性を実験して この勉強会を締めようと思います
攻撃シナリオ 4 : RCE (任意コード実行 ) 参考文献: PortSwigger WEB Security
- Academy Lab: Web shell upload via extension blacklist bypassを改編 https://portswigger.net/web-security/file-upload/lab-file-upload-web-shell-upload-via-extension-blacklist-bypass
運用担当 櫻井さんのTODOに 「public/files/todosに変なphpファイルあったけど削除した」 とありましたね 脆弱性に関係あるのでしょうか?
画像を添付して、TODOを新規作成してみましょう ※容量が大きいとアップロードに失敗します。 ちょうどいい画像を持っていない方は、攻撃シナリオ4で使うデータ/cat.png を使ってください。
無事アップロードできました!
「開く」を押すと、大きく表示されます。 この時、アップロードしたファイル名がそのまま維持されている ことに気付きましたか?
Apacheは、拡張子がpngなので、 pngとして画像を表示しています。
もしここに、ファイル名が.phpで終わるPHPのスクリプトを アップロードしたらどうなるでしょうか?
たとえば 環境変数には DBのパスワードが 入っているのでは ...?
flag4が回答可能になりました。 [flag4] DBのrootユーザーのパスワードを特定せよ ※ 回答は最終ページにあります
• ヒント1 ◦ todo_id = 15 の投稿を見てみる • ヒント2 ◦
<?php var_dump(getenv()); ?>をtest.phpとして保存し、 アップロードしてから「開く」を押す • ヒント3 ◦ rootユーザーのパスワードのキーは「DB_ROOT_PASSWORD」 flag4のヒント
環境変数が表示されましたか? flag4 は DB_ROOT_PASSWORD でしたね
ちなみに、 PHPが実行できる = サーバーが完全に乗っ取られている ことを意味します
配布したファイルの 攻撃シナリオ 4で使うデータ /kiken.php に 先ほどの環境変数奪取で見つけた ID・パスワード・ DB名を埋めると ...?
DBの中身が見えてしまいましたね。 当然、クエリの内容を書き換えれば、 UPDATEもDROPもできますし、 PHPでexecを使えば rm -rf / などもできます。 SSH鍵を書き換えることもできるかもしれません。
• Apacheが動いている箇所に、静的ファイルを置かない • ファイル名をそのまま使わない • アップロードされた画像は、png→pngのように再変換することで、無害化 してから配置する [対策] どうしたらいいか
以上でペンテスト課題は終わりです おつかれさまでした!
最後に : 脆弱性の気付き方講座
まず大前提、自分が守るべきシステムの仕様は、 できるだけ細かいところまで把握しておいてください。 脆弱性を学んでいると、 「これ、うちのシステムだとあの機能に当てはまるんじゃないか?」 と思い当たる瞬間が必ずあります。 守るべきシステムと脆弱性を知る
以前私がとあるシステムの脆弱性を指摘できた きっかけは、OWASP Top 10を学んだことでした。 OWASP TOP10に載っていた「避けるべき仕様」と 自分がよく仕様を知っていたシステムが一致していたことで、 点と点が線になって繋がった瞬間でした。 守るべきシステムと脆弱性を知る
脆弱性を知っていたことと、 システムの仕様を具体的に覚えていたこと。 この2つが繋がったことで、 「これは脆弱性なのでは?」と気づくことができました。 守るべきシステムと脆弱性を知る
だから、 • 脆弱性の知識のインプット • システムの仕様を具体的に覚えていること この両方を大切にしましょう。 これらが揃って初めて、自然と脆弱性に気付けるようになります。 守るべきシステムと脆弱性を知る
補足
今回はチュートリアルとして全て説明してしまいましたが、 Burp Suiteの開発元のPortSwiggerに、 WebSecurity Academyという無料の教材がたくさんあります。 https://portswigger.net/web-security/certification/how-to-prepare ちなみにシナリオ4は下記の改編問題です。 実は原作はもう一ひねり必要です。ぜひやってみてください。 https://portswigger.net/web-security/file-upload/lab-file-upload-web-shell- upload-via-extension-blacklist-bypass
もっと深く学びたい方
また、BSCPというペネトレーションテストの資格もあります。 脆弱なWebアプリケーションが用意されており、 実際に攻撃を行いながら、脆弱性を見つけ出す実践形式の試験です。 Burp Suiteを用いた手動テストのスキルが問われるため、 実務に直結した内容になっています。 Academyをある程度こなした後、こちらもご検討ください💁 もっと深く学びたい方
Burp Suiteをfirefoxと統合して使うと、翻訳機能が使えたり、 firefoxの拡張機能が使えたりして便利です。 ▼設定方法はこちら https://portswigger.net/burp/documentation/desktop/external-browser-co nfig/browser-config-firefox Burp Suiteをfirefoxと統合して使う
あとがき
4つのワークショップ おつかれさまでした!
あとがき 社内でこの勉強会を実施した際は、 • 意外と簡単に侵入できてしまって驚いた • もっと専門知識がいるのかと思っていた • ペンテストの面白さを感じられた といった感想をいただきました。
あとがき ややセンシティブな内容ではありますが、 環境が違っても同様に学びになるものと思い、 本資料を公開するに至りました。 今回の勉強会の内容をきっかけに、セキュリティの面白さを知り、 みなさんのシステムを守る一助になれば嬉しく思います。
あとがき 最後になりますが、本資料で学んだ知識は悪用せず、 ご自身のサービスやコンテンツを守るためにご活用ください。 最後までお読みいただき、ありがとうございました。
改めての注意事項 今回のワークショップは、 レッドチーム的アプローチとして、具体的な攻撃手法の紹介を含みます。 管理者の許可なく第三者のシステムに対して実施した場合、 不正アクセス禁止法その他の法令に抵触する可能性があります。 絶対に実施しないでください。
flagの回答
flagの回答 • flag1 ◦ パスワードポリシー厳しくしたらクレームが来たので、緩める • flag2 ◦ sunshine •
flag3 ◦ public/files/todosに変なphpファイルあったけど削除した(誰かテスト した?) • flag4 ◦ xQ3GL4A+9d+z4kUBJQxLDcEih65BuBJyGaXB+ZMj1wA=
None