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
攻撃と防御で実践するプロダクトセキュリティ演習_2024(導入編)
Search
Recruit
PRO
August 09, 2024
Technology
4
1.1k
攻撃と防御で実践するプロダクトセキュリティ演習_2024(導入編)
2024年度リクルート エンジニアコース新人研修の講義資料です
Recruit
PRO
August 09, 2024
Tweet
Share
More Decks by Recruit
See All by Recruit
Azure Functions HTTPトリガーにおけるタイムアウトでハマったこと
recruitengineers
PRO
2
180
実務につなげる数理最適化
recruitengineers
PRO
7
740
うちにも入れたいDatadog
recruitengineers
PRO
2
580
リクルートのデータ基盤 Crois 年3倍成長!1日40,000コンテナの実行を支える AWS 活用とプラットフォームエンジニアリング
recruitengineers
PRO
2
350
Splunk Enterpriseで S3のデータを直接検索してみた!
recruitengineers
PRO
2
160
Looker APIを使い倒す ユーザーフィードバックを基にした継続的改善サイクル
recruitengineers
PRO
3
58
Kaggleふりかえり会〜LLM 20 Questions & ISIC 2024
recruitengineers
PRO
2
240
Balancing Revenue Goals and Off-Policy Evaluation Performance in Coupon Allocation
recruitengineers
PRO
2
52
Flutterによる 効率的なAndroid・iOS・Webアプリケーション開発の事例
recruitengineers
PRO
0
400
Other Decks in Technology
See All in Technology
KnowledgeBaseDocuments APIでベクトルインデックス管理を自動化する
iidaxs
1
280
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
150
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
150
podman_update_2024-12
orimanabu
1
290
APIとはなにか
mikanichinose
0
110
コンテナセキュリティのためのLandlock入門
nullpo_head
2
330
Google Cloud で始める Cloud Run 〜AWSとの比較と実例デモで解説〜
risatube
PRO
0
120
レンジャーシステムズ | 会社紹介(採用ピッチ)
rssytems
0
280
クレカ・銀行連携機能における “状態”との向き合い方 / SmartBank Engineer LT Event
smartbank
2
100
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
180
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
230
メンタル面でもつよつよエンジニアになる/登壇資料(井田 献一朗)
hacobu
0
120
Featured
See All Featured
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
810
A Philosophy of Restraint
colly
203
16k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.2k
Designing Experiences People Love
moore
138
23k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Designing for humans not robots
tammielis
250
25k
4 Signs Your Business is Dying
shpigford
182
21k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
Statistics for Hackers
jakevdp
796
220k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Transcript
߈ܸͱޚͰ࣮ફ͢ΔϓϩμΫτηΩϡϦςΟԋश ʙಋೖύʔτʙ ग़Ո ༞و ๎
ΠϯτϩμΫγϣϯ 2
3 ग़Ո༞و / Yuki Ideya • ݄ʙ 3&%5&".ॴଐ • ͦΕҎલۚ༥ܥͷ4*FSɺηΩϡϦςΟϕϯμʔͰެிͷڭҭࣄ
ۀͳͲ͍ͬͯ·ͨ͠ ʲ࠷ۙϋϚ͍ͬͯΔ͜ͱɾࠓޙΓ͍ͨ͜ͱʳ • ੜ"*ͷηΩϡϦςΟपΓษڧͨ͠Γͱ͔ ηΩϡϦςΟҎ֎ͷࣝ ՝ײʜʂ • ͷௐࢠ͕ຫੑతʹѱ͍ͷͰɺͣ˓ͩΜͱ͔ͱੜ"*ͰΓΛΘ Γʹͬͯ͘ΕΔΈΛࡧத • ւಓ͔ΒϦϞʔτͰಇ͍ͯͯग़ࣾ΄΅ͳ͍ͷͰ߈ΊͨαϒΧϧͬΆ ͍ΛങͬͨΓ͢ΔͷͰ͕͢ɺணΔ໘͕ͳ͍ͯͭ͘ޙչ͠·͢ ظͷ࣋පͰͷௐࢠ͕ѱΊͳͷͰ֏͍ͳͲͰ͓ฉ͖͍ۤ͠໘͕͋Δ͔͠Ε·ͤΜɻ ͪΌΜͱ࠷ޙ·ͰίϯςϯπΛ͓ಧ͚Ͱ͖ΔΑ͏४උສͳͷͰ҆͝৺͍ͩ͘͞ʜʂ
4 ๎ / Tomoya Nakanishi • य़ʙ 3&%5&".ॴଐ •
ϦΫϧʔτ৽ଔೖࣾ ʲ࠷ۙϋϚ͍ͬͯΔ͜ͱɾࠓޙΓ͍ͨ͜ͱʳ • ϖωτϨʔγϣϯςετͷࢿ֨ษڧɺҰ൪࠷ۙऔͬͨͷ04&1 • μΠϏϯάʹߦ͘ճ͕૿͍͑ͯΔ
5 ඇެ։
ಋೖฤ(1)ͷΞδΣϯμ 6 ΠϯτϩμΫγϣϯ ԋशڥΛ৮ͬͯΈΑ͏ 3. ϓϩμΫτηΩϡϦςΟͱ੬ऑੑ 4. WebΞϓϦέʔγϣϯʹ͓͚Δ੬ऑੑͱ߈ܸख๏
5. ੬ऑੑͷରࡦ 6. WebΞϓϦέʔγϣϯʹର͢Δ߈ܸख๏ΛΑΓৄ͘͠ ษڧ͍ͨ͠ํ
ࠓճͷߨٛ ߈ܸ ͱ ޚ Ͱ࣮ફ͢ΔϓϩμΫτηΩϡϦςΟԋशͰɺ 7 ߈ܸऀ͕ͲͷΑ͏ʹ੬ऑੑΛѱ༻͢Δͷ͔ΛΔ͜ͱͰɺ ਖ਼͘͠੬ऑੑΛमਖ਼͢ΔͨΊͷࣝͱํ๏ Λʹ͚ͭΔ͜ͱΛతͱ͠·͢
• ڐՄ͞ΕͨγεςϜҎ֎ʹࢼ͞ͳ͍͜ͱ ʢෆਖ਼ΞΫηεېࢭ๏ʣ • ਖ਼ͳཧ༝ͳ͘ϚϧΣΞΛऔಘɾอ༗͠ͳ͍͜ͱ ʢෆਖ਼ࢦྩి࣓తهʹؔ͢Δࡑʣ • Πϯλʔωοτ্Ͱ͞ΕΔιϑτΣΞͷར༻࣌ʹɺͦΕΒͷ৴པੑΛ ࣄલʹ֬ೝ͢Δ͜ͱ ʢใηΩϡϦςΟରࡦج४ʣ
ҙࣄ߲ 8 ͜ͷߨٛͰ࣮ࡍʹѱ༻͕ՄೳͳίʔυΛऔΓѻ͍·͢ɻ औΓѻ͍ʹेʹҙ͍ͯͩ͘͠͞ɻ
ԋशڥΛ৮ͬͯΈΑ͏ 9
10 ඇެ։
11 ඇެ։
12 ඇެ։
1-1. ػೳΛࢼ͠ͳ͕ΒιʔείʔυΛݟͯΈ·͠ΐ͏ 1-2. ʲൃలʳ੬ऑੑΛ୳ͯ͠Έ·͠ΐ͏ 13 ԋश1ɿԋशڥΛ৮ͬͯΈ·͠ΐ͏(࣮ࢪ࣌ؒ: 15)
ϓϩμΫτηΩϡϦςΟͱ੬ऑੑ 14
15 ηΩϡϦςΟ্ͷऑ͕͋ΔϓϩμΫτΛ࡞ΔͱͲ͏ͳΔʁ
16 ඇެ։
17 ඇެ։
18 ඇެ։
੬ऑੑ ʢVulnerabilityʣ 19 ηΩϡϦςΟ্ͷऑ͕͋ΔϓϩμΫτΛ࡞ΔͱͲ͏ͳΔʁ ιϑτΣΞʹ͓͚Δ ͱ͍͏
ੈͷதͷγεςϜɾιϑτΣΞʹରͯ͠ ຖͲΕ͚ͩͷ੬ऑੑ͕ใࠂ͞Ε͍ͯΔʁ Q. 20
1ฏۉ80݅ۙ͘ใࠂ͞Ε͍ͯΔʢ2023ʣ※ WebαʔϏεͳͲͷར༻ऀͷରॲͷඞཁ͕ͳ͍ͷΛ߹ΘͤΔͱɺ ΑΓଟ͘ͷͷ͕ଘࡏ͢Δͱߟ͑ΒΕΔ A. 21 ※CVEʢڞ௨੬ऑੑࣝผࢠʣͷ༩ϕʔε
ͲΜͳʹ੬ऑੑ͕ใࠂ͞Ε͍ͯΔʁ • LinuxWindowsɺAndroidɺiOSͳͲͷOS • ϓϩάϥϛϯάݴޠͷඪ४ϥΠϒϥϦ • ήʔϜػͳͲͷΈࠐΈػث • ChromeFirefoxͳͲͷϒϥβ ྫ͑ɾɾɾ
ͷճΓͰ͘ར༻͞ΕΔ༗໊ͳιϑτΣΞʹ੬ऑੑ͕ൃݟ͞Ε͍ͯΔ զʑ੬ऑੑΛ࡞ΓࠐΜͰ͠·͏Մೳੑेʹ͋Δ 22
WebΞϓϦέʔγϣϯʹ͓͚Δ੬ऑੑͱ߈ܸख๏ 23
ຊηΫγϣϯͷΞδΣϯμ 24 1. ຊηΫγϣϯͰऔΓѻ͏੬ऑੑͷհ 2. XSS (Cross-Site Scripting) 3. IDORʢInsecure
Direct Object Reference) 4. CSRF (Cross-Site Request Forgery) 5. SQL Injection 6. Path Traversal 7. DoS (Denial-of-Service) 8. OS Command Injection
25 ඇެ։
26 XSSʢCross-Site Scriptingʣ
27 ඇެ։
28 ඇެ։
XSSʹΑΔ߈ܸྫ 29 ใऔ ѱҙͷ͋Δίϯςϯπͷվม • $PPLJFͷऔʹΑΔϩάΠϯηογϣϯͷͷͬͱΓ • $PPLJFΛ༩ͨ͠ϦΫΤετ࣮ߦͱ༰ͷಡΈऔΓ • ը໘ʹදࣔ͞Εͨใͷࡡऔ
• ٗϖʔδͷදࣔͳͲ
XSSͷݪཧ 30 ѱҙͷ͋Δ+BWB4DSJQͷίʔυ͕ ຒΊࠐΊͯ͠·͏ϖʔδ
XSSͷݪཧ 31 $PPLJFΛࣗͷαʔόʔʹૹ৴ ͤ͞ΔίʔυΛຒΊࠐΜͰΖ ͏ʂ 攻撃者 ΞΫηε͢Δͱ $PPLJF͕ൈ͔ΕΔ +BWBTDSJQU
XSSͷݪཧ 32 攻撃者 ΞΫηε͢Δͱ $PPLJF͕ൈ͔ΕΔ +BWBTDSJQU 被害者 ͜ͷਓͷϓϩϑΟʔϧؾʹͳ Δʂ ΞΫηε࣌ʹ࣮ߦ
XSSͷݪཧ 33 ϖϯΪϯ͘Μͷ ηογϣϯήοτʂ 攻撃者 ΞΫηε͢Δͱ $PPLJF͕ൈ͔ΕΔ +BWBTDSJQU 被害者 ඃऀϖʔδΛ
Ӿཡ͚ͨͩ͠Ͱ $PPLJF͕ൈ͔Εͯ͠·͏ ͜ͷਓͷϓϩϑΟʔϧؾʹͳΔʂ ΞΫηε࣌ʹ࣮ߦ
ૉͳٙ 34 攻撃者 被害者 アクセスすると Cookieが抜かれる JavaScript ߈ܸऀ͕༻ҙͨ͠ ϖʔδʹΞΫηε ߈ܸऀ͕༻ҙͨ͠ϖʔδͷ+BWB4DSJQUͰ
ԋशڥͷαΠτͷใΛऔΕͳ͍ͷʁ ٙ
ૉͳٙ 35 攻撃者 被害者 アクセスすると Cookieが抜かれる JavaScript ߈ܸऀ͕༻ҙͨ͠ ϖʔδʹΞΫηε ߈ܸऀ͕༻ҙͨ͠ϖʔδͷ+BWB4DSJQUͰ
ԋशڥͷαΠτͷใΛऔΕͳ͍ͷʁ ٙ 401 4BNF0SJHJO1PMJDZ ͰͰ͖ͳ͍
XSSʹΑΔ߈ܸྫ 36 https:// ...のページ window.document.body window.localStorage Cookie(※) https://evil.example.com/...のページ ※originより制限が緩いsite単位での管理 ѱҙͷ͋Δ+BWB4DSJQU
ブラウザ Origin ͕ҟͳΔϖʔδ ͜͜ͷ෦Λ 0SJHJOͱ͍͏ ຊདྷϒϥβ্Ͱɺ͋Δ63-ʹΑͬͯϩʔυ͞ΕΔϦιʔεʢ+BWB4DSJQUͷίʔυͳͲʣ͔Β ผαΠτͷϦιʔεΞΫηε͢Δ͜ͱ͕Ͱ͖ͳ͍ ˠಉҰΦϦδϯϙϦγʔʢ4BNF0SJHJO 1PMJDZ 401ʣʹΑΔอޢ
XSSʹΑΔ߈ܸྫ ຊདྷϒϥβ্Ͱɺ͋Δ63-ʹΑͬͯϩʔυ͞ΕΔϦιʔεʢ+BWB4DSJQUͷίʔυͳͲʣ͔Β ผαΠτͷϦιʔεΞΫηε͢Δ͜ͱ͕Ͱ͖ͳ͍ ˠ ಉҰΦϦδϯϙϦγʔʢ4BNF0SJHJO 1PMJDZ 401ʣʹΑΔอޢ 37 https:// ...のページ
window.document.body window.localStorage Cookie(※) https://evil.example.com/...のページ ※originより制限が緩いsite単位での管理 ѱҙͷ͋Δ+BWB4DSJQU ブラウザ Origin ͕ҟͳΔϖʔδ GFUDI ʹΑΔϨεϙϯεಡΈऔΓ
38 XSSʹͭͳ͕Δةݥͳ࣮ྫ +BWB4DSJQUͷίϯςΩετͰղऍ͞ΕΔ෦ <img onload=“ユーザーの入力”> document.body.innerHTML = “ユーザーの入力” document.write(“ユーザーの入力”) ʹ
Ϣʔβʔͷೖྗ͕͋Δ ˠ ةݥͳίʔυʹͳΔ K2VFSZͷK2VFSZBQQFOE 3FBDUKTͷEBOHFSPVTMZ4FU*OOFS)5.- ͳͲ ϥΠϒϥϦΛ͍ͬͯͯҙ͕ඞཁͳ෦͋Δɻ ࣮ྫ ࣮ྫ ࣮ྫ note
39 IDOR ʢInsecure Direct Object Referenceʣ
40 ඇެ։
41 ඇެ։
42 ඇެ։
43 IDORͷݪཧ POST /posts/ comment=今⽇はいい天気☀ ID: 1ͷߘΛߋ৽͢ΔϦΫΤετ POST /posts/ comment=こんにちは︕
ID: 2ͷߘΛߋ৽͢ΔϦΫΤετ ߘ͝ͱʹ*%ΛׂΓͯͯαʔόʔଆͰࣝผ ฤूରͷߘΛϦΫΤετ࣌ʹ*%Ͱࢦఆ A͞Μ͕ࣗͷ ߘʢID: 1ʣΛߋ৽ ߈ܸऀ͕ࣗͷ ߘʢID: 2ʣΛߋ৽ "͞Μ ʮࠓ͍͍ఱؾ‗ʯ ߈ܸऀ ʮ͜Μʹͪʯ ߘ ߘ
44 IDORͷݪཧ POST /posts/ comment=私はお⾦持ちです︕ ID: 2ͷߘΛߋ৽͢ΔϦΫΤετ ߈ܸऀ͕ࣗͷ ߘʢID: 2ʣΛߋ৽
他⼈の投稿IDに 変更して更新 "͞Μ ʮࢲ͓ۚ࣋ͪͰ͢ʂʯ ߈ܸऀ ʮ͜Μʹͪʯ ߘ ߘ
45 CSRF (Cross-Site Request Forgery)
46 ඇެ։
47 ඇެ։
αʔόʔɺʮͲͷϢʔβʔʹΑΔϦΫΤετ͔ʯͱ͍ͬͨηογϣϯཧΛϦΫΤετ࣌ʹ Ճ͞ΕΔ$PPLJFϔομͷͰߦ͏ ϒϥβଆͰɺϦΫΤετൃੜ࣌ʹαΠτผʹอଘ͞Ε͍ͯͨ$PPLJFΛࣗಈతʹ༩͢Δ 48 CSRFͷݪཧ ϩάΠϯ Ϣʔβʔhoge https://example.com Set-Cookie: sessionid=sdfhaiew
ϒϥβʹ CookieΛอଘ
αʔόʔɺʮͲͷϢʔβʔʹΑΔϦΫΤετ͔ʯͱ͍ͬͨηογϣϯཧΛϦΫΤετ࣌ʹ Ճ͞ΕΔ$PPLJFϔομͷͰߦ͏ ϒϥβଆͰɺϦΫΤετൃੜ࣌ʹαΠτผʹอଘ͞Ε͍ͯͨ$PPLJFΛࣗಈతʹ༩͢Δ 49 CSRFͷݪཧ ϩάΠϯ Set-Cookie: sessionid=sdfhaiew ߘͷ͍͍Ͷ ߘͷฤू
Cookie: sessionid=sdfhaiew Cookieͷ͔Β Ϣʔβʔhoge͔ΒͷϦΫΤετ ͱͯ͠ॲཧ ϒϥβ͔Β https://example.com ͷϦΫΤετૹ৴ Ϣʔβʔhoge https://example.com ϒϥβʹ CookieΛอଘ Cookie: sessionid=sdfhaiew ϦΫΤετʹ ࣗಈతʹ$PPLJF༩
ࣗಈͰ$PPLJFૹ৴͞ΕΔੑ࣭Λར༻ͯ͠ ଞͷϢʔβʔ͕ҙਤ͠ͳ͍ϦΫΤετૹ৴͢Δ63-ΞΫηεͤͨ͞ΒͲ͏ͳΔʁ 50 CSRFͷݪཧ Ϣʔβʔͷআ ʮϢʔβʔͷআʯͷϦΫΤετ ͱಉ͡63-Λૹ৴ ϩάΠϯࡁΈͷϒϥβͰ ϦϯΫΛ։͘ Ϣʔβʔhoge
Cookieͷ͔Β Ϣʔβʔhoge͔ΒͷϦΫΤετ ͱͯ͠ॲཧ ˠ Ϣʔβʔͷҙਤʹͯ͠উखʹΞΧϯτ͕আ͞Εͯ͠·͏ Cookie: sessionid=sdfhaiew ϦΫΤετʹ ࣗಈతʹ$PPLJF༩ ϒϥβ͔Β IUUQTFYBNQMFDPN ͷϦΫΤετૹ৴
51 SQL Injection
52 ඇެ։
53 ඇެ։
8FCΞϓϦέʔγϣϯͰσʔλͷอଘʹσʔλϕʔεʢ%#ʣ͕ར༻͞ΕΔ͜ͱ͕ଟ͍ 54 DBαʔόʔ Webαʔόʔ SQL Injectionͷݪཧ ίϝϯτʹ”hoge”͕ ؚ·ΕΔߘΛݕࡧ ”hoge”ΛؚΉίϝϯτΛ DBݕࡧ͢Δॲཧ
ݕࡧ݁ՌͷϨίʔυ %#ͷૢ࡞ʹԠͯ͡ ൃߦ͢Δ42-ΫΤϦΛΈཱͯ SELECT * FROM users WHERE comment LIKE ‘%hoge%’
55 42-*OKFDUJPOͷݪཧ 4&-&$5 '30.VTFST8)&3&DPNNFOU-*,&bϢʔβʔͷೖྗ` ʮ`ʯͰғΘΕͨ෦จࣈྻͱͯ͠ղऍ ϢʔβʔͷೖྗΛར༻͢Δ42-ΫΤϦ
56 42-*OKFDUJPOͷݪཧ 4&-&$5 '30.VTFST8)&3&DPNNFOU-*,&bϢʔβʔͷೖྗ` ʮ`ʯͰғΘΕͨ෦จࣈྻͱͯ͠ղऍ 4&-&$5 '30.VTFST8)&3&DPNNFOU-*,&b`6/*0/4&-&$5 '30.VTFST b` Ϣʔβʔͷೖྗͷ్தʹʮ`ʯؚ͕·Ε͍ͯͨΒɾɾɾʁ
͜͜Ͱจࣈྻͱͯ͠ऴΘΓ จࣈྻͰͳ͍෦ͱͯ͠ղऍ͞ΕΔ ͖ͳΫΤϦจΛهͰ͖Δ ϢʔβʔͷೖྗΛར༻͢Δ42-ΫΤϦ
ใ࿙͍͑ 6/*0/۟Λར༻ͯ͠Ϩεϙϯε͔Βใऔಘ #MJOE42-*OKFDUJPO ݅ࣜΛར༻ͨ͠ΤϥʔԠ͔Βใऔಘ͢Δ &SSPSCBTFE42-*OKFDUJPO ݅ࣜΛར༻ͨ͠4-&&1͔Βใऔಘ͢Δ 5JNFCBTFE42-*OKFDUJPO %P4 4-&&1۟ͷར༻ʹΑΔॲཧͷԆ 57
42-*OKFDUJPOʹΑΔ߈ܸྫ ར༻͍ͯ͠Δ%#αʔόʔͷछྨݖݶʹΑͬͯɺҙίʔυ࣮ߦϑΝΠϧಡΈऔΓՄೳʹ
58 Path Traversal
59 ඇެ։
60 ඇެ։
ϑΝΠϧΞοϓϩʔυɾμϯϩʔυػೳͷ࣮ ʢྫɿϓϩϑΟʔϧը૾ͷऔಘɺ$47σʔλͷೖߘͳͲʣ 61 Path Traversalͷݪཧ อଘઌಡΈग़͠ݩͷσΟϨΫτϦΛܾఆ͢ΔࡍʹϢʔβʔͷೖྗΛར༻ lBQQVQMPBETz GJMFOBNF GJMFOBNFதʹlzΛؚΊͨύεΛࢦఆ͢Δͱɾɾɾ
ϑΝΠϧΞοϓϩʔυɾμϯϩʔυػೳͷ࣮ ʢྫɿϓϩϑΟʔϧը૾ͷऔಘɺ$47σʔλͷೖߘͳͲʣ 62 Path Traversalͷݪཧ ಡΈग़͢ϑΝΠϧ͕FUDQBTTXEʹͳͬͯ͠·͏ lBQQVQMPBETFUDQBTTXEz อଘઌಡΈग़͠ݩͷσΟϨΫτϦΛܾఆ͢ΔࡍʹϢʔβʔͷೖྗΛར༻ lBQQVQMPBETz GJMFOBNF
GJMFOBNFதʹlzΛؚΊͨύεΛࢦఆ͢Δͱɾɾɾ
ҙͷίʔυ࣮ߦ QIQKTQͷஔʹΑΔαʔόʔ্Ͱͷίʔυͷ࣮ߦ αʔόʔ্ͷҙͷϑΝΠϧɾใͷಡΈऔΓ ϩάϑΝΠϧͷऔಘ αʔόʔͷߏใऔಘ ڥมͷऔಘ 63 Path TraversalʹΑΔ߈ܸྫ
64 DoS (Denial-of-Service)
65 DoSͷ࣮ྫ ϓϩϑΟʔϧը૾ઃఆ࣌ʹΓൈ͖ॲཧͷίϚϯυ͕࣮ߦ͞Ε͍ͯΔ ϐΫηϧ͕ଟ͍ը૾Λੜͯ͠Ξοϓϩʔυ $ vips black black.png 1000000 1000000
--bands 3 ྫʣԯϐΫηϧͷQOHը૾Λੜ ˠ Γൈ͖ॲཧͰେͳ$16ϦιʔεΛফඅ
66 ඇެ։
67 DoSͷݪҼྫ ܁Γฦ͠ॲཧͷ࣮ϛε ϑΝΠϧͷऔΓѻ͍ ճ෮ෆೳͳྫ֎ ճͷ্ݶ੍͕ݶ͕ແ͍ αΠζ੍ݶ͕ແ͍ɺϦιʔεͷ։์Ε ϝϞϦͷྖҬ֎ΞΫηε͕ൃੜ͢ΔόάʹΑΔϓϩηεͷΫϥογϡ
68 OS Command Injection
69 ඇެ։
70 ඇެ։
ίϚϯυΛ࣮ߦ͢ΔࡍͷҰ෦ͷʹϢʔβʔͷೖྗΛར༻͢Δ࣮ -JOVYͰγΣϧػೳΛ༗ޮʹͨ͠ίϚϯυ࣮ߦͷ߹ʢྫɿDIJME@QSPDFTTFYFDʣ γΣϧεΫϦϓτͷߏจ͕ར༻Ͱ͖Δ 71 OS Command Injectionͷݪཧ DPOWFSUJOQVUQOH HSBWJUZDFOUFSSFTJ[FYϢʔβʔͷೖྗ?DSPQPVUQVUQOH cΛؚΊͨʮϢʔβʔͷೖྗʯΛࢦఆ͢Δͱɾɾɾ
ίϚϯυΛ࣮ߦ͢ΔࡍͷҰ෦ͷʹϢʔβʔͷೖྗΛར༻͢Δ࣮ -JOVYͰγΣϧػೳΛ༗ޮʹͨ͠ίϚϯυ࣮ߦͷ߹ʢྫɿDIJME@QSPDFTTFYFDʣ γΣϧεΫϦϓτͷߏจ͕ར༻Ͱ͖Δ 72 OS Command Injectionͷݪཧ DPOWFSUJOQVUQOH HSBWJUZDFOUFSSFTJ[FYϢʔβʔͷೖྗ?DSPQPVUQVUQOH cΛؚΊͨʮϢʔβʔͷೖྗʯΛࢦఆ͢Δͱɾɾɾ
DPOWFSUJOQVUQOH HSBWJUZDFOUFSSFTJ[FYcMTc?DSPQPVUQVUQOH ͭͷίϚϯυ ͭͷίϚϯυ ͭͷίϚϯυ Ϣʔβʔͷࢦఆͨ͠ίϚϯυ͕࣮ߦ͞Εͯ͠·͏
73 OS Command Injectionͷ࣮ྫ ίϚϯυΛ࣮ߦ͢ΔؔʹϢʔβʔೖྗΛར༻͢Δέʔε ʢจࣈྻ݁߹ͳͲʣ system(“ユーザーの入力”) exec(“ユーザーの入力”) passthru(“ユーザーの入力”) Runtime.getRuntime().exec(“ユーザーの入力”)
child_process.spawn(“ユーザーの入力”) child_process.exec(“ユーザーの入力”) 1)1 +BWB /PEFKT exec(“ユーザーの入力”) system(“ユーザーの入力”) 3VCZ
੬ऑੑͷରࡦ 74
ຊηΫγϣϯͷΞδΣϯμ 75 1. Path Traversalରࡦ 2. OS Command Injectionରࡦ 3.
੬ऑੑରࡦͷϙΠϯτʢࠓճͷԋशࠓޙͷۀͰ࣮ ફͯ͠΄͍͜͠ͱ
ϑΝΠϧΞοϓϩʔυɾμϯϩʔυػೳͷ࣮ ʢྫɿϓϩϑΟʔϧը૾ͷऔಘɺ$47σʔλͷೖߘͳͲʣ 76 Path Traversalͷݪཧʢ࠶ܝʣ อଘઌಡΈग़͠ݩͷσΟϨΫτϦΛܾఆ͢ΔࡍʹϢʔβʔͷೖྗΛར༻ lBQQVQMPBETz GJMFOBNF ˠ ಡΈग़͢ϑΝΠϧ͕ҙਤ͠ͳ͍FUDQBTTXEʹͳͬͯ͠·͏
lzΛར༻͢Δͱɾɾɾ lBQQVQMPBETFUDQBTTXEz
../../../etc/passwd 77 Path Traversalରࡦ filenameʹ1্ͭͷ֊Λࣔ͢ “../” ͕ར༻Ͱ͖Δ͜ͱ͕͔ͩΒɾɾɾ filename͔Β “../” ΛऔΓআ͘ॲཧΛͯ͠ରࡦ
etc/passwd /app/uploads/etc/passwd “/app/uploads/” + filename ࡉΛͯ͠ BQQVQMPBETԼ͕ಡΈग़͠ରͷύεʹͳΔ ˠ ҙͷύεͷϑΝΠϧΛಡΈग़͢͜ͱ͕Ͱ͖ͳ͘ͳͬͨ ˞͜ͷमਖ਼ํ๏ਖ਼͋͘͠Γ·ͤΜʂ
78 Path Traversalରࡦ Node.jsͰͷ࣮ ΛऔΓআ͘ॲཧ
ઌఔͷ1BUI5SBWFSTBMͷରࡦΛӌճͯ͠ FUDQBTTXEΛಡΈग़ ͯ͠Έ·͠ΐ͏ ͲͷΑ͏ʹରࡦΛ͢Δͱᘳʹमਖ਼Ͱ͖Δ͔Λߟ͑ͯΈ·͠ΐ͏ 79 ԋश8ɿରࡦͷӌճ (࣮ࢪ࣌ؒ: 10)
filenameʹ….//….//….//….//etc/passwd Λࢦఆ͢Δ͜ͱͰରࡦΛӌճͰ͖Δ 80 Path Traversalରࡦ ….//….//….//etc/passwd ../../../etc/passwd /app/uploads/../../../etc/passwd “/app/uploads/” +
filename → /etc/passwd ͔ΒϑΝΠϧΛಡΈग़ͯ͠͠·͏
81 Path Traversalରࡦ ରࡦྫ ύεͷਖ਼نԽͷྫɿ /app/uploads/./././etc/passwd → /app/uploads/etc/passwd /app/uploads/././../uploads/../etc/././passwd →
/etc/passwd ύεΛਖ਼نԽͯ͠ɺҙਤͨ͠σΟϨΫτϦԼ͕ࢦఆ͞Ε͍ͯΔ͔Λ ݕূ /app/uploads/ Ͱ࢝·Δʁ
ίϚϯυΛ࣮ߦ͢ΔࡍͷҰ෦ͷʹϢʔβʔͷೖྗΛར༻͢Δ࣮ -JOVYͰγΣϧػೳΛ༗ޮʹͨ͠ίϚϯυ࣮ߦͷ߹ʢྫɿDIJME@QSPDFTTFYFDʣ γΣϧεΫϦϓτͷߏจ͕ར༻Ͱ͖Δ 82 OS Command Injectionͷݪཧʢ࠶ܝʣ DPOWFSUJOQVUQOH HSBWJUZDFOUFSSFTJ[FYϢʔβʔͷೖྗ?DSPQPVUQVUQOH cΛؚΊͨʮϢʔβʔͷೖྗʯΛࢦఆ͢Δͱɾɾɾ
DPOWFSUJOQVUQOH HSBWJUZDFOUFSSFTJ[FYcMTc?DSPQPVUQVUQOH ͭͷίϚϯυ ͭͷίϚϯυ ͭͷίϚϯυ Ϣʔβʔͷࢦఆͨ͠ίϚϯυ͕࣮ߦ͞Εͯ͠·͏
83 OS Command Injectionରࡦ ίϚϯυͷҾͱͯ͠ѻ͏෦ΛγΣϧߏจͷҰ෦ͱͯ͠ར༻Ͱ͖ͯ͠·͏ͷ͕͔ͩΒɾɾɾɾ Ϣʔβʔೖྗͷ෦Λ""ͰғΉ DPOWFSUJOQVUQOH HSBWJUZDFOUFSSFTJ[FYϢʔβʔͷೖྗ?DSPQ PVUQVUQOH DPOWFSUJOQVUQOH
HSBWJUZDFOUFSSFTJ[FYcMTc?DSPQPVUQVUQOH ""ͰͭͷҾͱͯ͠ೝࣝ͞ΕΔͷͰɺ MT࣮ߦ͞Εͳ͍ ˞͜ͷमਖ਼ํ๏ਖ਼͋͘͠Γ·ͤΜʂ
84 OS Command Injectionରࡦ /PEFKTͰͷ࣮
9-1. ઌఔͷOS Command InjectionͷରࡦΛӌճͯ͠ ls Λ࣮ߦͯ͠Έ· ͠ΐ͏ 9-2. ͲͷΑ͏ʹରࡦΛ͢Δͱྑ͍͔Λߟ͑ͯΈ·͠ΐ͏ 85
ԋश9ɿରࡦͷӌճ (࣮ࢪ࣌ؒ: 10)
86 OS Command Injectionରࡦ AͰίϚϯυΛғΜͰରࡦΛӌճͰ͖Δ DPOWFSUlJOQVUQOHzHSBWJUZDFOUFSSFTJ[FlYAMTA?zDSPQlPVUQVUQOHz
87 OS Command Injectionରࡦ ରࡦɿ ಛఆͷจࣈΛېࢭͯ͠ίϚϯυ͕࣮ߦ͞Εͳ͍Α͏ʹ͠Α͏ɾɾɾ ˞͜ͷमਖ਼ํ๏ਖ਼͋͘͠Γ·ͤΜʂ Λېࢭ A
88 OS Command Injectionରࡦ ͰίϚϯυΛғΜͰରࡦΛӌճͰ͖Δ DPOWFSUlJOQVUQOHzHSBWJUZDFOUFSSFTJ[FlY MT ?zDSPQlPVUQVUQOHz
89 OS Command Injectionରࡦ ରࡦɿ ˞͜ͷमਖ਼ํ๏ਖ਼͋͘͠Γ·ͤΜʂ Λېࢭ A
90 OS Command Injectionରࡦ lcMTczͰจࣈྻ෦Λൈ͚ͯӌճͰ͖Δ DPOWFSUlJOQVUQOHzHSBWJUZDFOUFSSFTJ[FlYzcMTcz?zDSPQlPVUQVUQOHz
91 OS Command Injectionରࡦ ରࡦɿ ˞͜ͷमਖ਼ํ๏ਖ਼͋͘͠Γ·ͤΜʂ Al Λېࢭ ېࢭจࣈΛ૿͢ରࡦͰຊʹେৎɾɾɾʁ
92 OS Command Injectionରࡦ ϑΝΠϧ໊ͷࡉͱΈ߹Θͤͯӌճ DPOWFSUlUNQJOQVUQOHʘzHSBWJUZDFOUFSSFTJ[FlcMTcY?zDSPQ lPVUQVUQOHz όοΫεϥογϡͰlΛΤεέʔϓॲཧ
/PEFKTͷ߹ IUUQTHJUIVCDPNNNPNUDIFWNBHJDLXBOEKT Ͱಉ༷ͷॲཧΛهड़Ͱ͖Δ 93 OS Command Injectionରࡦ ରࡦྫ ίϚϯυ࣮ߦΛͤͣʹಉͷॲཧΛ࣮ݱ͢Δ ېࢭจࣈΛ૿͢
ํΛݟͦ͏
ੈͷதҰൠʹެ։͞Ε͍ͯΔ߈ܸख๏ରࡦͷϕετϓϥΫςΟε͕͋Ε ͦΕʹج͍࣮ͮͯΛ͢Δ • ͯ͢ͷ߈ܸखஈΛࣗͰߟ͑ɺᘳʹରࡦΛ࣮͢Δ͜ͱ͍͠ • 94442-*OKFDUJPOͳͲͷҰൠతͳ੬ऑੑɺϑϨʔϜϫʔΫͷυΩϡϝϯτதͳͲɺ ϕετϓϥΫςΟεͷهࡌ͕͋Δ߹͕ଟ͍ͷͰͦΕʹै͏ 94 ੬ऑੑରࡦͷϙΠϯτʢࠓճͷԋशࠓޙͷۀͰ࣮ફͯ͠΄͍͜͠ͱʣ
95 ੬ऑੑରࡦͷϙΠϯτʢࠓճͷԋशࠓޙͷۀͰ࣮ફͯ͠΄͍͜͠ͱʣ ѱ༻͞Ε͍͢ػೳ࣮ΛΖ͏ • ઃܭɾ࣮͍ͯ͠Δ࣌ʹηΩϡϦςΟΛҙࣝͰ͖Δঢ়ଶʹͳΖ͏ ʢϢʔβʔೖྗ͕ଟ͍ՕॴɺϑΝΠϧμϯϩʔυɾΞοϓϩʔυͳͲʣ • ٯʹѱ༻͞ΕΔ͜ͱ͕ͳ͍҆શͳػೳɾ࣮͔ΔΑ͏ʹ
96 ੬ऑੑରࡦͷϙΠϯτʢࠓޙۀͷதͰߟ͑ͯ΄͍͜͠ͱʣ ΑΓ؆୯ʹ͔࣮ͭ֬ʹ҆શʹ࣮Ͱ͖Δํ๏ସࡦΛଟ֯తʹߟ͑Α͏ 04$PNNBOE*OKFDUJPOͷྫ ˠ ίϚϯυ࣮ߦΛ͢ΔؔΛ͏ͷΛΊΔ
• PortSwigger WebSecurity Academy ʢ https://portswigger.net/web-security ʣ • ମܥతʹֶͿ ҆શͳWebΞϓϦέʔγϣϯͷ࡞Γํ
ʢ https://www.sbcr.jp/product/4797393163/ ʣ 97 WebΞϓϦέʔγϣϯʹର͢Δ߈ܸख๏ΛΑΓৄ͘͠ษڧ͍ͨ͠ํ
ԋश 98
99 ࠓճʮCTFʯͱݺΕΔܗࣜͰνʔϜ͝ͱͷԋश CTFͱʁ Capture The Flag ઐٕࣝज़Λۦͯ͠Ӆ͞Ε͍ͯΔFlagʢൿີͷจࣈྻʣΛݟ͚ͭग़͠ɺ ࣌ؒʹ֫ಘͨ͠߹ܭಘΛڝ͏ϋοΩϯάίϯςετ νʔϜ͝ͱʹ֫ಘͨ͠ϙΠϯτΛڝ͏ ԋश֓ཁ
100 ඇެ։
101 2छྨ ੬ऑੑΛѱ༻ͯ͠ൿີͷ'MBHΛ औಘɾૹ৴͢Δ͜ͱͰ ϙΠϯτΛ֫ಘͰ͖Δ ߈ܸʢAttackʣ ѱ༻Մೳͳ੬ऑੑΛमਖ਼͠ɺ ϦϙδτϦʹίϛοτ ߨࢣʹ֬ೝΛͯ͠Β͏͜ͱͰ ϙΠϯτΛ֫ಘͰ͖Δ
ޚʢDefenseʣ ʹ͍ͭͯ
102 üνʔϜͰ͔Βͳ͍ਓ͕͍Εڭ͑߹͏ͳͲɺޓ͍ʹॿ͚߹͍ͳ͕ΒਐΊ ͍ͯͩ͘͞ üΦϯϥΠϯͷਓ͕͍Δ߹ʹɺߨࢣࢀՃͰ͖ΔΑ͏ɺߨࢣ͕ೖ͍ͬͯΔ νϟϯωϧͷϋυϧΛ׆༻͍ͯͩ͘͠͞ üαʔόʔʹଓͰ͖ͳ͍ͳͲͷτϥϒϧ࣌SlackͰϝϯγϣϯ ʢ @pdo-fye0325-prd-security-tutors ʣ Λ͚ͯߨࢣʹΒ͍ͤͯͩ͘͞
αʔόʔϦηοτͳͲͷରԠΛߦ͍·͢ üձࣾͷϧʔϧ๏Λक্ͬͨͰ͋Εɺར༻͢ΔπʔϧαΠτʹ੍ݶ ͋Γ·ͤΜ ԋशͷਐΊํ
103 είΞαʔόʔʹ͍ͭͯ ࠓճͷԋशͰඞཁͳ֤छૢ࡞͕Ͱ͖ΔαʔόʔͰ͢ ͷճఏग़ ֫ಘͨ͠ϙΠϯτͷ֬ೝ ॱҐͷ֬ೝ
104 είΞαʔόʔͷΞΫηεͱϩάΠϯ ͞ΕͨείΞαʔόʔͷURLΛ։͘ ※͜ͷαʔόʔ߈ܸରͰͳ͍͜ͱʹҙ ӈ্ͷLoginΛΫϦοΫ note
105 Check1: είΞαʔόʔͷΞΫηεͱϩάΠϯ νʔϜ͝ͱʹ͞Ε͍ͯΔϩάΠϯใͰϩάΠϯ
106 Check1: Ұཡϖʔδͷ֬ೝ ࠓճͷԋशதͰจνʔϜ͝ͱʹ͞ΕͨυΩϡϝϯτΛࢀর͍ͯͩ͘͠͞
107 ʹ͍ͭͯ ü༩ϙΠϯτԼهͷ௨ΓͰ͢ attack: 100 pts defense: मਖ਼͕ᘳͳ߹: 100 pts
मਖ਼͕ෆશͳ߹: 50 pts üChallenge͝ͱʹ൪߸͕ৼΒΕ͍ͯ·͕͢Ͳͷॱ൪Ͱղ͍ͯߏ͍·ͤΜ üChallengeͷattackdefenseʹղ͖͘ॱ൪ʹࢦఆ͋Γ·ͤΜ ü֤Ͱͦͷ͕ղ͚ͨνʔϜΛ֬ೝͰ͖·͢ ଟ͘ͷνʔϜ͕ղ͚ͨͷํ͕қ͕͍͔͠Ε·ͤΜ
ͷ֬ೝ 108
109 Check 2: νϡʔτϦΞϧʢ߈ܸฤʣɿ֬ೝ ֤νʔϜʹ͞ΕͨυΩϡϝϯτ͔ΒจΛ֬ೝͰ͖·͢
110 Check 3: νϡʔτϦΞϧʢ߈ܸฤʣɿ֬ೝ தͷϦϯΫΛΫϦοΫͯ͠߈ܸରͷΞϓϦέʔγϣϯʹΞΫηε ϢʔβʔΛొͯ͠ϩάΠϯ͢ΔͱɺϓϩϑΟʔϧ͕දࣔ͞ΕΔγϯϓϧͳWebαΠτ
111 Check 4: νϡʔτϦΞϧʢ߈ܸฤʣͷιʔείʔυͷऔಘ ֤νʔϜʹ͞ΕͨϦϙδτϦΛΫϩʔϯͯ͠ιʔείʔυΛ֬ೝ $ git clone /bootcamp-2024-teamx.git $
cd bootcamp-2024-teamx/ $ ls … fortune … ໊ͱಉҰͷσΟϨΫτϦ໊ʹͦͷʹؔ࿈ͨ͠ϑΝΠϧ͕֨ೲ͞Ε͍ͯΔ ࠓճͷͷ߹ʮfortuneʯ
112 ΞϓϦέʔγϣϯͱιʔεɾίʔυ͔Β ੬ऑੑΛ୳ͯ͠'MBHΛ֫ಘ͠Α͏ʢ߈ܸฤʣ
113 Flagʹ͍ͭͯ üFlagͷܗࣜ͝ͱʹࢦఆ͕ͳ͍ݶΓɺ ctfRED{[¥x20-¥x7E]+} ʢ{}ද ࣔՄೳͳ1จࣈҎ্ͷASCIIจࣈʣͰ͢ üdummy{…} ͱ͍ͬͨμϛʔͷFlag͕දࣔ͞ΕΔ͜ͱ͕͋Γ·͕͢ɺຊͰ ͳ͍͜ͱʹҙ͍ͯͩ͘͠͞ ü͞ΕͨιʔείʔυதͰɺຊͷFlag͕ϚεΫ͞Ε͍ͯ·͢
üFlagૹ৴ϑΥʔϜ͔ΒԿճૹ৴ͯ͠ϙΠϯτ͕ݮΔ͜ͱ͋Γ·ͤΜ͕ɺ ਪଌ͕ࠔͳจࣈྻʹͳ͍ͬͯ·͢ üօ͞Μͷਐ۩߹Λ֬ೝ͍ͨ͠ͷͰɺFlagͳΔ͘ཷΊࠐ·ͣʹఏग़Λ͓ ئ͍͠·͢
114 ੬ऑੑʹ͍ͭͯ ü࣍ͷ੬ऑੑࠓճͷ߈ܸରͰ͋Γ·ͤΜ • HTTPΛར༻ͯ͠௨৴͍ͯ͠Δ • CookieʹSecureଐੑ͕༩͞Ε͍ͯͳ͍ • DoS߈ܸ͕Մೳ •
ϩάΠϯࢼߦճʹ੍ݶ͕ͳ͍
115 νϡʔτϦΞϧʢ߈ܸฤʣɿFlagͷॴͷ֬ೝ ·ͣιʔείʔυத͔Βz'MBHzͷॴΛ୳͢ 'MBH࠷ॳʹొ͞ΕΔϢʔβʔͷ lGMBHzΧϥϜʹ֨ೲ͞Ε͍ͯΔ fortune/src/database/seeders/UserSeeder.php ϩάΠϯதͷϢʔβʔ໊͕zBENJOzͷ ͱ͖ʹzGMBHzΛදࣔ fortune/src/resources/views/user.blade.php
116 νϡʔτϦΞϧʢ߈ܸฤʣɿ੬ऑੑ ϩάΠϯ͍ͯ͠ΔϢʔβʔΛࣝผ͢ΔϩδοΫΛݟͯΈΔ VTFS@JE͕Ωʔͷ$PPLJFͷΛϩάΠϯதͷϢʔβʔͷJEͱͯ͠ར༻͍ͯ͠Δ
117 νϡʔτϦΞϧʢ߈ܸฤʣɿ੬ऑੑ ཧऀϢʔβʔΞϓϦέʔγϣϯ࠷ॳʹొ͞Ε͍ͯΔϢʔβʔͳͷͰɺ ཧऀϢʔβʔͷ VTFS@JE Ͱ͋Δ͜ͱ͕༧Ͱ͖Δ ։ൃऀπʔϧ͔Β$PPLJFΛฤूͯ͠Λ̍ʹมߋ
118 νϡʔτϦΞϧʢ߈ܸฤʣɿ੬ऑੑ ͏ҰϦΫΤετΛૹ৴͢Δͱɾɾɾ'MBH͕දࣔ͞Εͨ
119 νϡʔτϦΞϧʢ߈ܸฤʣɿϑϥάఏग़ ֫ಘͨ͠'MBHΛϑΥʔϜ͔Βఏग़ ͕৭ʹมԽͯ͠QUT֫ಘ
120 ߈ܸʹར༻Ͱ͖ͨ੬ऑੑΛमਖ਼ͯ͠ΈΑ͏ʢޚฤʣ
121 मਖ਼ʹ͍ͭͯ ü੬ऑੑҎ֎ͷ෦ͷಈ࡞Ͱ͖Δ͚ͩอͬͨ··Ͱमਖ਼Λߦ͍ͬͯͩ͘͞ üҰؾʹଟ͘ͷఏग़͕͋Δͱ֬ೝ͕େมʹͳΔͷͰɺमਖ਼ਵ࣌ఏग़ͯ͠Β ͑Δͱॿ͔Γ·͢ αϒϚϦϯઓ๏
122 Check 6: νϡʔτϦΞϧʢޚฤʣ: मਖ਼ͷಈ࡞֬ೝ $ cd fortune $ docker
compose up --build ͞ΕͨϦϙδτϦதͷίʔυΛमਖ਼ޙͷಈ࡞֬ೝ ࣍ͷίϚϯυͰ%PDLFSίϯςφͷىಈͱಉ࣌ʹϏϧυΛ࣮ߦ αʔόʔ͕ىಈͯ͠ IUUQMPDBMIPTU ͔ΒΞΫηεͰ͖Δ
123 Docker Composeͷجຊૢ࡞ʢࢀߟʣ $ docker compose exec php /bin/bash PHPαʔϏεͷίϯςφͰγΣϧΛىಈ
$ docker compose down ίϯςφΛআ
αʔόʔɺʮͲͷϢʔβʔʹΑΔϦΫΤετ͔ʯͱ͍ͬͨηογϣϯཧΛϦΫΤετ࣌ʹ Ճ͞ΕΔCookieϔομͷͰߦ͏ ϒϥβଆͰɺϦΫΤετൃੜ࣌ʹαΠτผʹอଘ͞Ε͍ͯͨCookieΛࣗಈతʹ༩͢Δ 124 ηογϣϯཧʢ࠶ܝʣ ϩάΠϯ Set-Cookie: sessionid=sdfhaiew ߘͷ͍͍Ͷ ߘͷฤू
Cookie: sessionid=sdfhaiew Cookieͷใ͔Β Ϣʔβʔhoge͔ΒͷϦΫΤετ ͱͯ͠ॲཧ https://example.comϦΫΤετ → อଘͨ͠CookieΛϦΫΤετ ϔομʹࣗಈతʹ༩ Ϣʔβʔhoge https://example.com ϒϥβʹ CookieΛอଘ Cookie: sessionid=sdfhaiew
125 Check 7: νϡʔτϦΞϧʢޚฤʣ: ίʔυͷमਖ਼ ϑϨʔϜϫʔΫʹ༻ҙ͞ΕͨηογϣϯཧͷAPIΛར༻ͯ͠ɺ user_idͷอࢀরΛ͢ΔΑ͏ʹमਖ਼ fortune/src/app/Http/Controllers/UserController.php
126 Check 8: νϡʔτϦΞϧʢޚฤʣ: मਖ਼ͷఏग़ masterϒϥϯνʹमਖ਼ίϛοτΛؚΊͨޙɺSlackͷ֤νʔϜͷνϟϯωϧʹͯ ԼهͷΑ͏ͳϝοηʔδͰߨࢣʹ௨͍ͯͩ͘͠͞ ߨࢣ͕֬ೝޙɺείΞαʔόʔ্ͰϙΠϯτΛ༩ͯ͠ɺ݁ՌΛฦ৴͠·͢ masterϒϥϯνͷΈ͕࠾ରͰ͋Δ͜ͱʹҙ͍ͯͩ͘͠͞
127 Check 9: είΞαʔόʔ্Ͱͷ֫ಘϙΠϯτͷ֬ೝ Scoreboardλϒ͔Βɺ֤νʔϜ͕֫ಘͨ͠ϙΠϯτΛ֬ೝՄೳ
Ҏ্Ͱ͜ͷޙͷԋशͷઆ໌ऴྃͰ͢ ࠷ޙʹɾɾɾ
129 ࠓճͷԋशͷউऀɺ ϙΠϯτΛ࠷ଟ֫͘ಘͨ͠νʔϜ
130 ࠓճͷԋशͷউऀɺ ϙΠϯτΛ࠷ଟ֫͘ಘͨ͠νʔϜ Ͱͳ͘ɾɾɾ
131 ࠓճͷԋशͷউऀɺ ϙΠϯτΛ࠷ଟ֫͘ಘͨ͠νʔϜ Ͱͳ͘ɾɾɾ Ͱ͖Δ͚ͩଟ͘ͷ͜ͱΛֶͿ͜ͱ͕Ͱ͖ͨνʔϜ Ͱ͢ʂ νʔϜͷதͰڠྗ͋ͬͯ͠ԋशΛਐΊ͍ͯͩ͘͞ ߨࢣਞ͔Βͷώϯτੵۃతʹ׆༻͍ͯͩ͘͠͞
Appendix. 132
133 Appendix 1. webhook.siteͷ͍ํ ᶃ https://webhook.site/ ʹΞΫηε͢ΔͱɺࣗಈతʹURL͕ൃߦ͞ΕΔ
134 Appendix 1. webhook.siteͷ͍ํ ᶄ ൃߦ͞ΕͨURLʹରͯ͠ϦΫΤετૹ৴ ϒϥβͰΞΫηε curlͰૹ৴͢Δ scriptλάͰϦΫΤετૹ৴
135 Appendix 1. webhook.siteͷ͍ํ ᶅ ൃߦ͞ΕͨURLѼͷHTTPϦΫΤετͷதΛ֬ೝՄೳ methodͱURL ΫΤϦύϥϝʔλ ΫΤϦύϥϝʔλ ϦΫΤετϘσΟ
136 Appendix 2. curlίϚϯυͷ͍ํ λʔϛφϧ͔ΒHTTPϦΫΤετΛૹ৴Ͱ͖Δπʔϧ # Cookieヘッダを設定してリクエスト $ curl -H
‘Cookie: user_id=1’ http://localhost:8000/ # フォームの送信 $ curl -X POST -d ‘param=1¶m2=hoge’ http://example.com/ # ファイルをアップロード $ curl -X POST -F upfile=@/path/to/sample.txt http://example.com/upload
137 Appendix 2. curlίϚϯυͷ͍ํ $ python3 -m pip install requests
PythonͷHTTPΫϥΠΞϯτϥΠϒϥϦ import requests r = requests.get(‘http://example.com') print(r.text) r = requests.post(‘http://example.com', data={‘param1’: ‘value1’}, headers={‘Cookie’: ‘hoge=fuga’}) print(r.text)
138 Appendix 3. Chrome։ൃऀπʔϧͷ͍ํ Option + Command + I Ͱىಈ
ʮιʔεʯλϒ ݱࡏͷϖʔδͷදࣔʹඞཁͳ HTMLɺJSɺCSSΛӾཡͰ͖Δ JSͷ߹ʹߦ൪߸ΛΫϦοΫ͢ Δ͜ͱͰϒϨʔΫϙΠϯτΛઃஔ ֤ͯ͠มͷͳͲΛ֬ೝՄೳ
139 Appendix 3. Chrome։ൃऀπʔϧͷ͍ํ ʮωοτϫʔΫʯλϒ ʮϩάΛอ࣋ʯʹνΣοΫΛ͚Δ͜ͱͰϖʔδભҠ ͕ൃੜͯ͠ɺϦΫΤετཤྺ͕আ͞Εͳ͍ ʮΞϓϦέʔγϣϯʯλϒ ද͍ࣔͯ͠ΔWebαΠτͷ CookielocalStorageͷӾཡฤू͕Մೳ
ϒϥβͰൃੜͨ͠ϦΫΤετ ΛӾཡͰ͖Δ
140 Appendix 4. Burp Suiteͷ͍ํ ʮProxyʯ→ ʮInterceptʯ ʮOpen browserʯΛΫϦοΫ͢Δ ͜ͱͰΈࠐΈϒϥβ͕ىಈ
141 Appendix 4. Burp Suiteͷ͍ํ ʮIntercept is onʯͷঢ়ଶʹ͢Δ ͱɺىಈͨ͠ϒϥβͰൃੜ͠ ͨϦΫΤετΛதஅͯ͠ฤूͰ
͖Δ
142