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
PHPサイバーテロの技法 書籍紹介
Search
ikuwow
June 06, 2015
Programming
0
930
PHPサイバーテロの技法 書籍紹介
社内勉強会で「PHPサイバーテロの技法」を紹介しました
http://ikuwow.website/entry/php-cyberterro/
ikuwow
June 06, 2015
Tweet
Share
More Decks by ikuwow
See All by ikuwow
Elasticsearch on EC2からAmazon Elasticsearch Serviceに 移行してだいぶ楽になった話
ikuwow
0
3.5k
意外と使える! Alibaba Cloud
ikuwow
0
230
teratailの解析基盤をEFKで作っていろいろ楽しい話
ikuwow
0
860
UNIXという考え方
ikuwow
1
2k
技術書紹介 パーフェクトPHP
ikuwow
0
2.1k
みんなもMiddlemanで技術ブログ作って幸せになろう!
ikuwow
0
960
Other Decks in Programming
See All in Programming
来たるべき 8.0 に備えて React 19 新機能と React Router 固有機能の取捨選択とすり合わせを考える
oukayuka
2
860
地方に住むエンジニアの残酷な現実とキャリア論
ichimichi
5
1.4k
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
240
A2A プロトコルを試してみる
azukiazusa1
2
1.2k
Composerが「依存解決」のためにどんな工夫をしているか #phpcon
o0h
PRO
1
240
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
450
AIプログラマーDevinは PHPerの夢を見るか?
shinyasaita
1
170
Webの外へ飛び出せ NativePHPが切り拓くPHPの未来
takuyakatsusa
2
430
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.6k
データの民主化を支える、透明性のあるデータ利活用への挑戦 2025-06-25 Database Engineering Meetup#7
y_ken
0
320
LT 2025-06-30: プロダクトエンジニアの役割
yamamotok
0
540
「ElixirでIoT!!」のこれまでとこれから
takasehideki
0
370
Featured
See All Featured
Embracing the Ebb and Flow
colly
86
4.7k
Optimizing for Happiness
mojombo
379
70k
GraphQLとの向き合い方2022年版
quramy
48
14k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
A Modern Web Designer's Workflow
chriscoyier
694
190k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
A better future with KSS
kneath
239
17k
Thoughts on Productivity
jonyablonski
69
4.7k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
700
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
A Tale of Four Properties
chriscoyier
160
23k
Transcript
ॻ੶հɿ PHPαΠόʔςϩͷٕ๏ ʙ߈ܸͱޚͷ࣮ࡍʙ 2015/06/03(Fri) Ι͘Λʢikuwowʣ
ࣗݾհ • Ι͘Λʢikuwowʣ • झຯ αʔόʔߏஙɾ ཧࣗಈԽ • ϚΠϒʔϜ ըαʔόʔ
• ͖ͳ৭ ࢵ @ikuwow
֓ཁ • ஶऀ GIJOE • AmazonϨϏϡʔ18ɺ ධՁ4.6 • 2005ॳ൛ୈ1ൃߦ 2011ॳ൛ୈ10ൃߦ
ʁʂ
ຊͷ࣍ 1.WebΞϓϦέʔγϣϯͷηΩϡϦςΟͱ 2.WebΞϓϦέʔγϣϯΛ࣮ࡍʹ߈ܸͯ͠ΈΑ͏ 3.߈ܸํ๏14छྨ૯͟Β͑ 4.WebΞϓϦέʔγϣϯηΩϡϦςΟͷཧ 5.HTTPηογϣϯ͔Β߈ܸͷຊ࣭ΛΔ 6.੬ऑੑεΩϟφʔΛར༻͢Δ 7.νϟʔτࣜ:੬ऑੑͷݟ͚ͭํ ͍ΘΏΔʮWebηΩϡϦςΟͷຊʯ
ex. XSSɺCSRFɺSQLΠϯδΣΫγϣϯɺ…
͜ͷຊͷಛΛҰݴͰݴ͏ͱ
߈ܸํ๏ʹͨ͠ WebηΩϡϦςΟͷ ϨϑΝϨϯε
ʮຊॻͰɺ߈ܸํ๏Λղઆ͠ɺ ͦΕʹର͢Δదͳޚํ๏Λ ໌͍ࣔͯ͠·͢ɻ ։ൃऀ͕҆શͰ߈ܸʹڧ͍ ΞϓϦέʔγϣϯΛ࡞Δ্Ͱɺ ඞཁͳࣝΛ͜ͷҰʹڽॖɻʯ ʢຊͷଳΑΓʣ
͜ͷຊͷελϯε • ʮηΩϡϦςΟ߈ܸํ๏͋Γ͖ʯ • ʮຊॻ࠷େͷςʔϚཏੑͰ͢ʯ ʮશ14छͷ߈ܸํ๏ʯ • ʮWebʹ͓͚ΔηΩϡϦςΟରࡦWebඪ४Խ MVCΑΓΔ͔ʹ༏ઌ͕ߴ͘ɺݴޠͷجૅจ ๏ͷ͙࣍͢ʹ֮͑Δͷʯ
ʢʮ͡ΊʹʯΑΓʣ
ಙؙຊͱൺֱ ɾ੬ऑੑʹ ɾಡΈత ɾ߈ܸํ๏ʹ ɾϨϑΝϨϯεత
ͦͷଞΑ͍ͱ͜Ζ • ઌʹαϯϓϧίʔυΛग़ͯ͠߈ܸΛࢼΈΔ • ʮରࡦࣦഊྫʯʮෳͷରࡦྫʯʮϝϦο τɾσϝϦοτʯͳͲ༰͕ॆ࣮͍ͯ͠Δ <?php // ੬ऑੑ
readfile(‘/home/username/mydata/‘.$_GET[‘file_name’]); // ରࡦࣦഊྫ readfile(‘/home/user/name/mydata/’.str_replace(‘../‘,’’, $_GET[‘file_name’])); // ରࡦޭྫ readfile(‘/home/user/name/mydata/’.basename($_GET[‘file_name’]));
ಡΜͰಘΒΕͨҰͭͷڭ܇
ϢʔβʔΛ ৴༻͠ͳ͍
ϢʔβʔΛ৴༻͠ͳ͍ • ΞϓϦέʔγϣϯʹͲΜͳϦΫΤετ͕ඈΜͰ͘Δ͔Θ͔Βͳ͍ • Ϣʔβʔ͔Βͷೖྗৗʹ࠷ѱͷঢ়گΛߟ͑Δ • Ϣʔβʔ͔ΒͷೖྗಟΛ͍࣋ͬͯΔͱߟ͑Δ • => αχλΠζʢhtmlspecialchars()ɺ໌ࣔతͳΩϟετɺಈతͳ
ϑΝΠϧಡΈࠐΈɾ࣮ߦΛڐ͞ͳ͍ɺ… etc. Ϣʔβʔ͔ΒͷೖྗΛγεςϜʹ͞ͳ͍͜ͱ͕ॏཁ
͜ͷຊΛಡΉͱ͖ͷҙ
ݹ͍
ݹ͍ • 200512݄ॳ൛ୈҰൃߦ • PHP͕ݹ͍ʢPHP4ʙ5.1ʣ ɾmysql_query(), register_globals, safe_mode, … etc.
• ίʔυؔʹ͍ͭͯͷ෦ඞͣ PHPͷυΩϡϝϯτΛࢀর͠ͳ͕ΒಡΉ͜ͱ
ಡΉͱ͍͍ਓ • MVCϑϨʔϜϫʔΫʹ͔͞Εͨ ΏͱΓWebʢPHPʣΤϯδχΞ 42-ΠϯδΣΫγϣϯͳΜͯ ϑϨʔϜϫʔΫ͕ରࡦͯ͘͠ΕΔͰ͠ΐʁ )551ϔομͱ͔ ݟͯΑ͘Θ͔Γ·ͤΜ
ͳΜͷʹཱ͔ͭ • ʮ͜ΕηΩϡϦςΟʹ݀͋Δɾɾɾʁʯͱࢥͬ ͨ࣌ʹऔΓग़ͯ֬͠ೝ • ߈ܸऀͷઢͰηΩϡϦςΟΛ֬ೝͰ͖Δ • ຊʹରࡦ͞Ε͍ͯΔ͔ෆ҆ʹͳͬͯϑϨʔ ϜϫʔΫͷιʔεΛಡΈͨ͘ͳΔ
·ͱΊ • ʮPHPαΠόʔςϩͷٕ๏ʯ߈ܸํ๏ʹͨ͠Web ηΩϡϦςΟͷϨϑΝϨϯεɻͨ·ʹಡΈͨ͘ͳΔຊɻ • ֶΔηΩϡϦςΟͷݪଇ ʮϢʔβʔΛ৴༻͠ͳ͍ʯ • ٕज़ॻͱ͔ͯ͠ͳΓݹ͍ຊͳͷͰ 10ͱ͍͏࣌ͷҧ͍ʹҙ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
ҎԼิॿεϥΠυ
ʮશ14छͷ߈ܸํ๏ʯ 1.XSSʢΫϩεαΠτεΫϦϓςΟϯάʣ 2.ίϯςϯπʹJavaScriptຒΊࠐΈ 3.SQLΠϯδΣΫγϣϯ 4.CSRFʢΫϩεαΠτϦΫΤετϑΥʔδΣϦʣ 5.ψϧόΠτ߈ܸ 6.σΟϨΫτϦτϥόʔαϧ 7.ڥมԚછ߈ܸ 8.HTTPϨεϙϯεׂ߈ܸ 9.ΠϯΫϧʔυ߈ܸ
10.evalར༻߈ܸ 11.֎෦ίϚϯυ࣮ߦ߈ܸ 12.ϑΝΠϧΞοϓϩʔυ߈ܸ 13.ηογϣϯϋΠδϟοΫ 14.εύϜϝʔϧ౿Έ߈ܸ શ14छͱஅݴͯ͠Δ => ཏੑ
࡞ऀ • GIJOEʢຊ໊ ޙ౻ๆཅʣ • ౦ژग़ɻେֶ࣌ੜֶΛઐ߈͠…ʢུʣ • ߴߒޫࢯͱGIJOEࢯͷ૪ʹ͍ͭͯɺGIJOEࢯ ʹͯ͠ΈΔ http://blogs.yahoo.co.jp/quitthemusic/
24047659.html