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
攻撃と防御で実践するプロダクトセキュリティ演習
Search
Recruit
PRO
August 10, 2023
Technology
1
2.3k
攻撃と防御で実践するプロダクトセキュリティ演習
2023年度リクルート エンジニアコース新人研修の講義資料です
Recruit
PRO
August 10, 2023
Tweet
Share
More Decks by Recruit
See All by Recruit
あなたの知らない Linuxカーネル脆弱性の世界
recruitengineers
PRO
3
160
dbtとBigQuery MLで実現する リクルートの営業支援基盤のモデル開発と保守運用
recruitengineers
PRO
3
160
『ホットペッパービューティー』のiOSアプリをUIKitからSwiftUIへ段階的に移行するためにやったこと
recruitengineers
PRO
4
1.6k
経営の意思決定を加速する 「事業KPIダッシュボード」構築の全貌
recruitengineers
PRO
4
270
Browser
recruitengineers
PRO
12
3.6k
JavaScript 研修
recruitengineers
PRO
8
2k
TypeScript入門
recruitengineers
PRO
37
14k
モダンフロントエンド 開発研修
recruitengineers
PRO
13
7.8k
Webアクセシビリティ入門
recruitengineers
PRO
4
2.1k
Other Decks in Technology
See All in Technology
アウトプットから始めるOSSコントリビューション 〜eslint-plugin-vueの場合〜 #vuefes
bengo4com
3
1.8k
デザインとエンジニアリングの架け橋を目指す OPTiMのデザインシステム「nucleus」の軌跡と広げ方
optim
0
120
Okta Identity Governanceで実現する最小権限の原則
demaecan
0
150
ざっくり学ぶ 『エンジニアリングリーダー 技術組織を育てるリーダーシップと セルフマネジメント』 / 50 minute Engineering Leader
iwashi86
2
600
様々なファイルシステム
sat
PRO
0
260
会社を支える Pythonという言語戦略 ~なぜPythonを主要言語にしているのか?~
curekoshimizu
3
880
Amazon Athena で JSON・Parquet・Iceberg のデータを検索し、性能を比較してみた
shigeruoda
1
150
GraphRAG グラフDBを使ったLLM生成(自作漫画DBを用いた具体例を用いて)
seaturt1e
1
150
現場の壁を乗り越えて、 「計装注入」が拓く オブザーバビリティ / Beyond the Field Barriers: Instrumentation Injection and the Future of Observability
aoto
PRO
1
640
QA業務を変える(!?)AIを併用した不具合分析の実践
ma2ri
0
160
RemoteFunctionを使ったコロケーション
mkazutaka
1
130
東京大学「Agile-X」のFPGA AIデザインハッカソンを制したソニーのAI最適化
sony
0
140
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.6k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.7k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Music & Morning Musume
bryan
46
6.9k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Reflections from 52 weeks, 52 projects
jeffersonlam
354
21k
How to train your dragon (web standard)
notwaldorf
97
6.3k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Transcript
߈ܸͱޚͰ࣮ફ͢ΔϓϩμΫτηΩϡϦςΟԋश ʙಋೖύʔτʙ ๎ Ճ౻ࠤ೭ี
ߨࢣͷհ
ߨࢣͷհ ๎ / Tomoya Nakanishi 2022ೖࣾ 2 झຯɿ
࠷ۙͬͨ͜ͱɾΓ͍ͨ͜ͱɿ өըؑɺ ͨ·ʹཱྀߦɺͨ·ʹCTF ɾSECCON 2022ຊબग़ ɾΫϥυܥͷηΩϡϦςΟษڧ ɾηΩϡϦςΟܥͷࢿ֨औಘʢOSCPऔಘࡁɺ࣍OSEPʣ
ߨࢣͷհ Ճ౻ ࠤ೭ี /Sanosuke Kato 2021ೖࣾ 3 झຯɿ ࠷ۙͬͨ͜ͱɾΓ͍ͨ͜ͱɿ
ήʔϜʢRocket Leagueʣɺͨ·ʹυϥΠϒɺԻָؑɺF1؍ઓ ɾCAPTCHAύζϧͷ༗ޮੑݕূ ɾLinuxͷ࣮ߦόΠφϦʹର͢Δ߈ܸख๏ͷΩϟονΞοϓ
ϓϩμΫτηΩϡϦςΟʹ͍ͭͯ
ϓϩμΫτͱηΩϡϦςΟ ϓϩμΫτར༻Λ௨༷ͯ͡ʑͳใࢿ࢈͕ू·Δ ۚ༥ࢿ࢈ ΫϥΠΞϯτͷใ ΧελϚʔͷใ
ϓϩμΫτར༻Λ௨༷ͯ͡ʑͳใࢿ࢈͕ू·Δ ۚ༥ࢿ࢈ ΧελϚʔͷใ ΫϥΠΞϯτͷใ ੬ऑੑ ੬ऑੑ ηΩϡϦςΟΛߟྀ͠ͳ͍࣮ ੬ऑੑΛੜΈग़͢ݪҼʹ ϓϩμΫτͱηΩϡϦςΟ
ϓϩμΫτར༻Λ௨༷ͯ͡ʑͳใࢿ࢈͕ू·Δ ۚ༥ࢿ࢈ ΧελϚʔͷใ ΫϥΠΞϯτͷใ ੬ऑੑΛѱ༻͞ΕΔͱɺ ͜ΕΒΛૂΘΕΔϦεΫ ੬ऑੑ ੬ऑੑ ϓϩμΫτͱηΩϡϦςΟ
ϓϩμΫτͷηΩϡϦςΟΛͲ͏֬อ͢Δʁ
ઈରʹ߈ܸ͞Εͳ͍࠷ڧͷํ๏
ϓϩμΫτΛఏڙ͠ͳ͕Βɺ ηΩϡϦςΟͷʹରॲ͠ͳ͚ΕͳΒͳ͍ ઈରʹ߈ܸ͞Εͳ͍࠷ڧͷํ๏
զʑͷۀ ཁ݅ఆٛઃܭࢿྉʹର͠ɺ ηΩϡϦςΟ؍ͰͷϦεΫ ΛϨϏϡʔɺૣظʹରࡦͰ͖ ΔΑ͏ʹ͢Δ ։ൃࡁΈͷϓϩμΫτͷ੬ऑੑ Λൃݟͯ͠ɺमਖ਼ͷͨΊͷࢧԉ Λ͢Δ αʔυύʔςΟͷ੬ऑੑΛ
ϞχλϦϯάͯ͠ɺࣾͷӨ ڹௐࠪͱରԠґཔΛ͢Δ ੬ऑੑݕࠪ ্ྲྀఔࢧԉ ૣظܯռ ϓϩμΫτͷηΩϡϦςΟΛʮ͔֬ͳͷʹ͢Δʯ͜ͱΛతʹɺ ༷ʑͳఔͰ։ൃऀΛࢧԉ͢Δۀ
ࠓճͷߨٛ߈ܸͱޚͰ࣮ફ͢ΔϓϩμΫτηΩϡϦςΟԋशͰɺ ߈ܸऀ͕ͲͷΑ͏ʹ੬ऑੑΛѱ༻͢Δͷ͔ΛΔ͜ͱͰɺ ਖ਼͘͠੬ऑੑΛमਖ਼͢ΔͨΊͷࣝͱํ๏ Λʹ͚ͭ·͢
ࠓճͷߨٛ༰
ࠓճʮCTFʯͱݺΕΔܗࣜͰνʔϜ͝ͱͷԋश CTFͱʁ Capture The Flag νʔϜ͝ͱʹ֫ಘͨ͠ϙΠϯτΛڝ͏ ઐٕࣝज़Λۦͯ͠Ӆ͞Ε͍ͯΔFlagʢ͑ʣΛݟ͚ͭग़͠ɺ ࣌ؒʹ֫ಘͨ͠߹ܭΛڝ͏ϋοΩϯάίϯςετ
WebΞϓϦέʔγϣϯͷ࣮Ͱ ҰൠతʹΑ͘ݟΒΕΔ੬ऑੑΛࡐʹग़ ʹ͍ͭͯ ‣ ΞΫηε੍ޚෆඋ ‣ ೝূೝՄػೳͷෆඋ ‣ ҙϑΝΠϧΞοϓϩʔυ
‣ SQLΠϯδΣΫγϣϯ ‣ OSίϚϯυΠϯδΣΫγϣϯ ‣ σΟϨΫτϦτϥόʔαϧ ‣ XSS ‣ CSRF ‣ ΦʔϓϯϦμΠϨΫτ ੬ऑੑ ࣮
ʹ͍ͭͯ ओʹ3छྨ ੬ऑੑΛѱ༻ͯ͠ൿີͷFlagΛऔಘ͠ ͯɺૹ৴͢Δ͜ͱͰϙΠϯτΛ֫ಘͰ ͖Δ ߈ܸʢattackʣ ѱ༻Մೳͳ੬ऑੑΛཁ݅ʹԊͬͯमਖ਼ ͯ͠ϦϙδτϦʹίϛοτޙɺߨࢣʹ ֬ೝͯ͠Β͏͜ͱͰϙΠϯτΛ֫ಘ
Ͱ͖Δ ޚʢdefenseʣ ੬ऑੑʹؔ͢Δ࣭ʹର͢Δਖ਼͍͠ ͑Λૹ৴͢Δ͜ͱͰϙΠϯτΛ֫ಘ Ͱ͖Δ ࣭ʢquestionʣ
νʔϜ͚ ඇެ։
ߨٛͷεέδϡʔϧ ඇެ։
ҙࣄ߲ ‣ଞͷडߨੜߨٛͷਐߦΛ͛ΔߦҝΛ͠ͳ͍͜ͱ - ߨٛͷ߹্ɺҙਤ͠ͳ͍ܗͰ͜ͷΑ͏ͳߦҝʹͳΔ߹͋ΔͷͰɺͦͷࡍߨࢣͷࢦࣔʹ ै͍ͬͯͩ͘͞ ‣ීஈͷύεϫʔυϝʔϧΞυϨεΛ༻͠ͳ͍͜ͱ - ࣗͷ࣮ࡍͷύεϫʔυͳͲ͕࿙Ӯ͢ΔՄೳੑ͕͋Γ·͢ -
࣮ࡍͷͷΛར༻͠ͳͯ͘ղ͚Δʹͳ͍ͬͯ·͢ ‣ߨٛͷղެ։͠ͳ͍͜ͱ - νʔϜͰͷใڞ༗ɺSlackͷϓϥΠϕʔτνϟϯωϧGHEͷPrivateϦϙδτϦΛར༻ ͍ͯͩ͘͠͞ - Λདྷͷݚमʹ͏Մೳੑ͕͋ΔͷͰɺΠϯλʔωοτ্ʹެ։͠ͳ͍Ͱ͍ͩ͘͞
‣ڐՄ͞ΕͨWebαΠτҎ֎ͷ੬ऑੑΛ߈ܸ͠ͳ͍͜ͱ ʢෆਖ਼ΞΫηεېࢭ๏ʣ ‣ਖ਼ͳཧ༝ͳ͘ϚϧΣΞΛऔಘɾอ༗͠ͳ͍͜ͱ ʢෆਖ਼ࢦྩి࣓తهʹؔ͢Δࡑʣ ‣Πϯλʔωοτ্Ͱ͞ΕΔιϑτΣΞͷར༻࣌ʹɺ ͦΕΒͷ৴པੑΛࣄલʹ֬ೝ͢Δ͜ͱʢใηΩϡϦςΟରࡦج४ʣ - Ұ෦ͷͰΠϯλʔωοτ্Ͱݕࡧͨ͠߈ܸίʔυΛ୳͢ͷ͕͋Γ·͕͢ɺߨࢣͷ֬ೝ ͕औΕΔ·Ͱɺखݩʹμϯϩʔυ͢Δ͜ͱ͕ແ͍Α͏ʹҙ͍ͯͩ͘͠͞
- ѱੑͷ߈ܸπʔϧͷར༻͕ݕ͞Εͨ߹ɺPCͷॳظԽΛ͓ئ͍͢Δ͜ͱ͕͋Γ·͢ ҙࣄ߲ʢຊߨٛதʹݶΒͣؾΛ͚ͭΔ͜ͱʣ
ԋशͷਐΊํ
ԋशͷਐΊํ ‣͔͜͜ΒνʔϜ͝ͱʹ͔Ε࣮ͯࡍʹखΛಈ͔͠ͳ͕ΒਐΊ͍͖ͯ·͢ ‣νʔϜͰΘ͔Βͳ͍ਓ͕͍Εڭ͑߹͏ͳͲɺޓ͍ʹॿ͚߹͍ͳ͕Β ਐΊ͍ͯͩ͘͞ ‣ ΦϯϥΠϯͷਓ͕͍Δ߹ʹɺߨࢣࢀՃͰ͖ΔΑ͏ɺߨࢣ͕ೖ͍ͬͯΔSlack νϟϯωϧͷϋυϧΛ׆༻͍ͯͩ͘͠͞ ‣αʔόʔʹଓͰ͖ͳ͍ͳͲͷτϥϒϧ࣌SlackͰϝϯγϣϯ ʢ@pdo-fye0324bc-product-security-tutors
ʣΛ͚ͯߨࢣʹΒ͍ͤͯͩ͘͞ɺ αʔόʔϦηοτͳͲͷରԠΛߦ͍·͢ ‣ձࣾͷϧʔϧ๏Λक্ͬͨͰ͋Εɺར༻͢ΔπʔϧαΠτʹ੍ݶ͋Γ· ͤΜ
ࣄલ४උ ‣Burp Suite Community Edition: https://portswigger.net/burp/communitydownload ‣Docker Desktop: https://www.docker.com/products/docker-desktop/
‣࠷৽൛ͷChrome ͔ࣗΒࢀՃ͍ͯ͠ΔํɺΤχίω/Πϯίωʹଓͯ͠ ԋशڥʹΞΫηε͍ͯͩ͘͠͞
είΞαʔόʔʹ͍ͭͯ ࠓճͷԋशͰඞཁͳ࣍ͷ͜ͱ͕Ͱ͖ΔαʔόʔͰ͢ ͷճఏग़ ֫ಘͨ͠ ϙΠϯτͷ֬ೝ ॱҐͷ֬ೝ
Check 1: είΞαʔόʔͷΞΫηεͱϩάΠϯ ӈ্ͷ-PHJOΛΫϦοΫ ͞ΕͨείΞαʔόʔͷ63-Λ։͘ʢ͜ͷαʔόʔ߈ܸରͰͳ͍͜ͱʹҙʂʂʣ
Check 1: είΞαʔόʔͷΞΫηεͱϩάΠϯ νʔϜ͝ͱʹ͞Ε͍ͯΔϩάΠϯใͰϩάΠϯ
Check 1: Ұཡϖʔδͷ֬ೝ ˞௨ৗͷ$5'Ͱ͜͜ʹจ͕هࡌ͞Ε͍ͯ·͕͢ɺࠓճνʔϜ͝ͱʹ༻ҙ͞ΕͨυΩϡϝϯτΛࢀর͍ͯͩ͘͠͞
ʹ͍ͭͯ ‣༩ϙΠϯτɺattack͕100ɺdefenseɺᘳͳ߹100ɺෆ શͳ߹ʹ50͕جຊͰ͢ ‣Challenge͝ͱʹ൪߸͕ৼΒΕ͍ͯ·͕͢ɺղ͖͘ॱ൪қʹ ؔແ͍ͷͰɺͲͷॱ൪Ͱղ͍ͯΒͬͯߏ͍·ͤΜ ‣ͦΕͧΕͷChallengeղ͘ॱ൪ʹࢦఆ͋Γ·ͤΜ͕ɺ question→attack→defenseͷॱʹղ͘͜ͱΛఆ͍ͯ͠·͢ ‣֤Ͱͦͷ͕ղ͚ͨνʔϜΛ֬ೝͰ͖ΔͷͰɺଟ͘ͷνʔϜ ͕ղ͚͔ͨΒղ͘ͱɺқ͕͍͔͠Ε·ͤΜ
νϡʔτϦΞϧ
ͷ֬ೝ
Check 2: νϡʔτϦΞϧʢ߈ܸฤʣɿ֬ೝ ֤νʔϜʹ͞ΕͨυΩϡϝϯτ͔Βจ͕֬ೝͰ͖·͢
Check 3: νϡʔτϦΞϧʢ߈ܸฤʣɿ֬ೝ จதͷϦϯΫΛΫϦοΫͯ͠ɺ߈ܸରͷΞϓϦέʔγϣϯʹΞΫηε ϢʔβʔΛొͯ͠ϩάΠϯ͢ΔͱɺϓϩϑΟʔϧ͕දࣔ͞ΕΔγϯϓϧͳ8FCαΠτ
Check 4: νϡʔτϦΞϧʢ߈ܸฤʣɿιʔείʔυͷऔಘ $ git clone https:!" /bootcamp-2023- teamx.git
$ cd bootcamp-2023-teamx/ $ ls … fortune … ֤νʔϜʹ͞ΕͨϦϙδτϦΛΫϩʔϯͯ͠ɺιʔείʔυΛ֬ೝ ࠓճͷʮGPSUVOFʯͱ͍͏໊લͳͷͰɺಉ໊͡લͷʮGPSUVOFʯͱ͍͏ σΟϨΫτϦͷதʹΞϓϦέʔγϣϯͷίʔυ͕֨ೲ͞Ε͍ͯΔ
ΞϓϦέʔγϣϯͱιʔείʔυ͔Β ੬ऑੑΛ୳ͯ͠FlagΛ֫ಘ͠Α͏ʢ߈ܸฤʣ
νϡʔτϦΞϧʢ߈ܸฤʣɿFlagͷॴ 'MBH࠷ॳʹొ͞ΕΔཧऀϢʔβʔͷ lGMBHzΧϥϜʹ֨ೲ͞Ε͍ͯΔ lGMBHzΧϥϜͷɺ Ϣʔβʔ໊͕zBENJOzͷͱ͖ʹදࣔ fortune/src/database/seeders/UserSeeder.php fortune/src/resources/views/user.blade.php ·ͣɺͦΕͧΕͷΞϓϦέʔγϣϯʹ͓͚Δɺ ຊདྷΞΫηεͰ͖ͳ͍ใΛͨ͠z'MBHz͕Ͳ͜ʹ֨ೲ͞Ε͍ͯΔ͔Λ୳͢
Flagʹ͍ͭͯ ‣Flagͷܗࣜ͝ͱʹࢦఆ͕ͳ͍ݶΓɺ ctfRED{[\x20-\x7E]+} ʢ{} දࣔՄೳͳ1จࣈҎ্ͷASCIIจࣈʣͰ͢ ‣dummy{…} ͱ͍ͬͨμϛʔͷFlag͕දࣔ͞ΕΔ͜ͱ͕͋Γ·͕͢ɺ ຊͰͳ͍͜ͱʹҙ͍ͯͩ͘͠͞ ‣͞ΕͨιʔείʔυதͰɺຊͷFlag͕ϚεΫ͞Ε͍ͯ·͢
‣Flagૹ৴ϑΥʔϜ͔ΒԿճૹ৴ͯ͠ϙΠϯτ͕ݮΔ͜ͱ͋Γ· ͤΜ͕ɺਪଌ͕ࠔͳจࣈྻʹͳ͍ͬͯ·͢
੬ऑੑʹ͍ͭͯ ‣࣍ͷ੬ऑੑࠓճͷ߈ܸରͰ͋Γ·ͤΜ • HTTPΛར༻ͯ͠௨৴͍ͯ͠Δ • CookieʹSecureଐੑ͕༩͞Ε͍ͯͳ͍ • DoS߈ܸ͕Մೳ •
ϩάΠϯࢼߦճʹ੍ݶ͕ͳ͍
%PDLFS$PNQPTF ߈ܸରΞϓϦͷߏʢࢀߟʣ ͞Ε͍ͯΔιʔείʔυͷ%PDLFS$PNQPTFΛىಈͨ͠αʔόʔΛ༻ҙ ֤ϙʔτѼͷ&-#͕༻ҙ͞Ε͍ͯΔߏ BQQ DSBXMFS NZTRM OHJOY QIQ
%PDLFS$PNQPTF IUUQMCIPHFBQQDBG FMCBQOPSUIFBTUBNB[POBXTDPN IUUQMCIPHFDSBXMFSEBDBFFFCG FMCBQOPSUIFBTUBNB[POBXTDPN IUUQMCGVHBFCCC FMCBQOPSUIFBTUBNB[POBXTDPN
͜ͷ͋ͱʹ͕͑͋ΔͷͰݟΔࡍҙ
νϡʔτϦΞϧʢ߈ܸฤʣɿ੬ऑੑ ϩάΠϯ͍ͯ͠ΔϢʔβʔͷࣝผΛ͢ΔϩδοΫΛݟͯΈΔͱɺ VTFS@JEͱ͍͏$PPLJF͔Β*%Λऔಘͯ͠ϢʔβʔͷใΛऔಘ͍ͯ͠Δ͜ͱ͕Θ͔Δ
νϡʔτϦΞϧʢ߈ܸฤʣɿ੬ऑੑ ཧऀϢʔβʔΞϓϦέʔγϣϯͷσϓϩΠ࣌ʹ࠷ॳʹొ͞Ε͍ͯΔͷͰɺ ཧऀϢʔβʔͷVTFS@JEͰ͋Δ͜ͱ͕༧Ͱ͖Δ (PPHMF$ISPNF%FWFMPQFS5PPMTΛར༻ͯ͠ɺ$PPLJFΛฤू VTFS@JEΛʹมߋ
νϡʔτϦΞϧʢ߈ܸฤʣɿ੬ऑੑ ͏ҰϦΫΤετΛૹ৴͢Δͱɾɾɾ 'MBH͕දࣔ͞Εͨ
Check 5: νϡʔτϦΞϧʢ߈ܸฤʣͷϑϥάఏग़ ֫ಘͨ͠'MBHΛ ͝ͱͷϑΥʔϜ͔Βૹ৴ ͕৭ʹมԽͯ͠ ϙΠϯτ֫ಘ ˞օ͞Μͷਐḿ۩߹Λ֬ೝ͍ͨ͠ͷͰɺ ϑϥάͳΔ͘ཷΊࠐ·ͣʹఏग़Λ͓ئ͍͠·͢
߈ܸʹར༻Ͱ͖ͨ੬ऑੑΛमਖ਼ͯ͠ΈΑ͏ʢޚฤʣ
मਖ਼ʹ͍ͭͯ ‣੬ऑੑҎ֎ͷ෦ͷಈ࡞Ͱ͖Δ͚ͩอͬͨ··Ͱमਖ਼Λߦͬͯͩ͘ ͍͞ ‣Ұؾʹଟ͘ͷఏग़͕͋Δͱ֬ೝ͕େมʹͳΔͷͰɺमਖ਼ਵ࣌ఏग़͠ ͯΒ͑Δͱॿ͔Γ·͢ αϒϚϦϯઓ๏
Check 6: νϡʔτϦΞϧʢޚฤʣɿमਖ਼ͷಈ࡞֬ೝ $ cd bootcamp-2023-teamx/fortune $ ls docker
docker!entrypoint.sh src docker!compose.yml resources # dockerίϯςφͷىಈͱಉ࣌ʹιʔείʔυΛؚΊͨϏϧυΛ͢Δ # αʔό͕ىಈͯ͠ɺhttp:"#localhost:8000/ ͔ΒΞΫηεͰ͖Δ $ docker compose up "$build ͞ΕͨϦϙδτϦͷίʔυΛमਖ਼ɺEPDLFSDPNQPTFͰαʔόΛىಈͯ͠ಈ࡞֬ೝ
Docker Composeͷجຊૢ࡞ # phpαʔϏεͷίϯςφͰγΣϧΛىಈ $ docker compose exec php
/bin/bash # ίϯςφΛআ $ docker compose down
Check 7: νϡʔτϦΞϧʢޚฤʣɿίʔυͷमਖ਼ ϑϨʔϜϫʔΫʹ༻ҙ͞Εͨηογϣϯؔ࿈ͷ"1*Λར༻ͯ͠ɺ VTFS@JEͷอࢀর͢Δͱ҆શʹमਖ਼Ͱ͖Δ fortune/src/app/Http/Controllers/UserController.php ϩάΠϯ࣌ͷϢʔβʔใऔಘɺηογϣϯ$PPLJFΛར༻͢Δͷ͕Ұൠత
Check 8: νϡʔτϦΞϧʢޚฤʣɿमਖ਼ͷఏग़ NBTUFSϒϥϯνʹमਖ਼ίϛοτΛؚΊͨޙɺ4MBDLͷ֤νʔϜͷνϟϯωϧʹͯɺ ԼهͷΑ͏ͳϝοηʔδͰߨࢣʹ௨͍ͯͩ͘͠͞ ߨࢣ͕֬ೝޙɺείΞαʔόʔ্ͰϙΠϯτΛ༩ͯ͠ɺ݁ՌΛฦ৴͠·͢ ʢNBTUFSϒϥϯνͷΈ͕࠾ରͰ͋Δ͜ͱʹҙʣ
Check 9: είΞαʔόʔ্Ͱͷ֫ಘϙΠϯτͷ֬ೝ 4DPSFCPBSEλϒ͔Βɺ֤νʔϜ͕֫ಘͨ͠Λ֬ೝͰ͖Δ
Λղ͘ࡍʹ༗༻ͳπʔϧͷجຊతͳ͍ํ
Chrome Developer Tools 0QUJPO $PNNBOEʴ*Ͱىಈ ʮιʔεʯλϒ ݱࡏͷϖʔδͷදࣔʹඞཁͳ)5.-ɺ+4ɺ$44ͳͲ ΛӾཡͰ͖Δ +4ͷ߹ɺߦ൪߸ΛΫϦοΫ͢Δ͜ͱͰɺ
ϒϨʔΫϙΠϯτΛઃఆͰ͖ɺ ॲཧ్தͷมͷͳͲΛݟΔ͜ͱ͕Ͱ͖Δ
Chrome Developer Tools ʮΞϓϦέʔγϣϯʯλϒ ද͍ࣔͯ͠Δ8FCαΠτ͕ར༻Ͱ͖Δ $PPLJFMPDBM4UPSBHFͷӾཡฤू͕Մೳ ʮωοτϫʔΫʯλϒ ϒϥβͰൃੜͨ͠ϦΫΤετΛӾཡͰ͖Δ ʮϩάΛอ࣋ʯʹνΣοΫΛ͚Δ͜ͱͰϖʔδભҠ͕
ൃੜͯ͠ɺϦΫΤετ͕আ͞Εͳ͘ͳΔ
BurpSuite ىಈޙʹʮ1SPYZʯˠʮ*OUFSDFQUʯ͔Β ʮ0QFOCSPXTFSʯΛΫϦοΫ͢Δ͜ͱͰɺΈࠐΈϒϥβ͕ىಈ
BurpSuite ʮ*OUFSDFQUJTPOʯͷঢ়ଶʹ͢ΔͱϒϥβͰൃੜͨ͠ϦΫΤετΛதஅ͠ɺ ฤूΛͯ͠ɺૹ৴͢Δ͜ͱ͕Ͱ͖Δ
curl # 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 λʔϛφϧ͔Β)551ϦΫΤετΛૹ৴Ͱ͖Δπʔϧ
Pythonͷrequests $ python3 #m pip install requests 1ZUIPOͷ)551ΫϥΠΞϯτϥΠϒϥϦ 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)
webhook.site IUUQTXFCIPPLTJUFʹΞΫηε͢Δͱɺࣗಈతʹ63-͕ൃߦ͞ΕΔ
webhook.site $curl -X POST !d ‘hoge=fuga' https:"# webhook.site/ /
<scri t>fetch(‘htt s:"#webhook.site/ ’) "%script> ϒϥβͰΞΫηε DVSMͰૹ৴͢Δ TDSJQUλάͰϦΫΤετૹ৴ ൃߦ͞Εͨ63-ʹԿΒ͔ͷํ๏ͰϦΫΤετΛૹ৴
webhook.site ൃߦ͞Εͨ63-Ѽͷ)551ϦΫΤετͷதΛ֬ೝͰ͖Δ NFUIPEͱ63- ΫΤϦύϥϝʔλ ϦΫΤετϘσΟ ϦΫΤετϔομ
࠷ޙʹ
ϙΠϯτΛଟ֫͘ಘͨ͠νʔϜ ࠓճͷԋशͷউऀ
ϙΠϯτΛଟ֫͘ಘͨ͠νʔϜ ࠓճͷԋशͷউऀ Ͱͳ͘ɾɾɾ
ϙΠϯτΛଟ֫͘ಘͨ͠νʔϜ ࠓճͷԋशͷউऀ Ͱͳ͘ɾɾɾ Ͱ͖Δ͚ͩଟ͘ͷ͜ͱΛֶͨνʔϜ
ϙΠϯτΛଟ֫͘ಘͨ͠νʔϜ ࠓճͷԋशͷউऀ Ͱͳ͘ɾɾɾ Ͱ͖Δ͚ͩଟ͘ͷ͜ͱΛֶͨνʔϜ νʔϜͷதͰڠྗ͋ͬͯ͠ԋशΛਐΊ͍ͯͩ͘͞ ߨࢣਞ͔Βͷώϯτੵۃతʹ׆༻͍ͯͩ͘͠͞
None