Slide 1

Slide 1 text

໺ଜ޸໋, ྗ෢݈࣍*, দຊ྄հ / ϖύϘݚڀॴ / *ྗ෢݈ٕ࣍ज़࢜ࣄ຿ॴ 2018.09.19 FIT2018 ୈ17ճ৘ใՊֶٕज़ϑΥʔϥϜ WebΞϓϦέʔγϣϯςετΛ༻͍ͨ
 SQLΫΤϦͷϗϫΠτϦετࣗಈ࡞੒ख๏

Slide 2

Slide 2 text

1. ݚڀͷഎܠͱ໨త 2. ैདྷͷϗϫΠτϦετࣗಈ࡞੒ͷ՝୊ 3. ఏҊख๏ 4. ࣮ݧ 5. ·ͱΊͱࠓޙͷ՝୊ 2 ໨࣍

Slide 3

Slide 3 text

1. ݚڀͷഎܠͱ໨త

Slide 4

Slide 4 text

• WebΞϓϦέʔγϣϯʢWebΞϓϦʣͷ੬ऑੑΛར༻ͨ͠߈ܸ͕ޙΛઈͨͳ͍ • WebαʔϏε͕อ༗͢Δػີ৘ใ͕࿙Ӯ͢Δඃ֐͕ൃੜ • WebΞϓϦ͕ར༻͢Δσʔλϕʔεʹෆਖ਼ΫΤϦΛൃߦͯ͠ߦΘΕΔ • ෆਖ਼ΫΤϦͱ͸ɼ੬ऑੑ߈ܸʹΑͬͯੜ͡Δ։ൃऀͷ૝ఆ֎ͷΫΤϦ • ෆਖ਼ΫΤϦΛݕ஌͢Δରࡦ͕ඞཁ 4 ݚڀͷഎܠ

Slide 5

Slide 5 text

• WebΞϓϦ͕ൃߦ͢ΔΫΤϦͷϗϫΠτϦετΛखಈͰ࡞੒ͯ͠ݕ஌ • େن໛ͳWebΞϓϦͰ͸ൃߦ͞ΕΔΫΤϦ͕๲େͰɼશͯͷΫΤϦΛ೺Ѳ ͸ࠔ೉ • WebΞϓϦͷվमʹΑͬͯൃߦ͞ΕΔΫΤϦ͕มԽ͠ɼϗϫΠτϦετͷ ߋ৽͕ඞཁ • ӡ༻ऀ΁ͷෛ୲͕େ͖͍ 5 ैདྷͷෆਖ਼ΫΤϦݕ஌ํ๏

Slide 6

Slide 6 text

• WebΞϓϦՔಇ࣌ʹൃߦ͞ΕΔΫΤϦΛ༻͍ͯ࡞੒͢Δख๏ • WebΞϓϦՔಇޙɼଈ࣌ʹෆਖ਼ΫΤϦΛݕ஌Ͱ͖ͳ͍ • WebΞϓϦͷιʔείʔυΛղੳͯ͠࡞੒͢Δख๏ • WebΞϓϦͷ࣮૷ʹґଘ͢ΔͨΊɼ൚༻తʹར༻Ͱ͖ͳ͍ 6 ैདྷͷϗϫΠτϦετࣗಈ࡞੒ख๏

Slide 7

Slide 7 text

• ҎԼͷཁ݅Λຬͨ͢ෆਖ਼ΫΤϦରࡦ • WebΞϓϦՔಈޙɼଈ࣌ʹෆਖ਼ΫΤϦΛݕ஌Ͱ͖Δ • WebΞϓϦͷ࣮૷ʹґଘ͠ͳ͍ • ෆਖ਼ΫΤϦରࡦಋೖ࣌ͷ։ൃ΍ӡ༻΁ͷӨڹ͕খ͍͞ 7 ݚڀͷ໨త

Slide 8

Slide 8 text

2. ैདྷͷϗϫΠτϦετࣗಈ࡞੒ͷ՝୊

Slide 9

Slide 9 text

• WebΞϓϦՔಈதʹൃߦ͞ΕͨΫΤϦΛऩू͠ɼΫΤϦߏ଄ʹͯ͠ొ࿥ • ΫΤϦߏ଄ͱ͸ΫΤϦͷϦςϥϧ஋ΛϓϨʔεϗϧμʔʹஔ͖׵͑ͨ΋ͷ 9 WebΞϓϦՔಈதʹൃߦ͞ΕͨΫΤϦΛ༻͍ͨख๏ σʔλϕʔε 8FCΞϓϦ ΫΤϦ ϗϫΠτϦετ 8FCΞϓϦՔಇ࣌ 4&-&$5'30.VTFST8)&3&JE 4&-&$5'30.VTFST8)&3&JE Ϧςϥϧ ΫΤϦߏ଄ͷྫ

Slide 10

Slide 10 text

• ϝϦοτ • WebΞϓϦͷ࣮૷ʹґଘͤͣϗϫΠτϦετΛ࡞੒Մೳ • σϝϦοτ • ΫΤϦΛऩू͢Δظ͕ؒඞཁͱͳΓɼظؒத͸ෆਖ਼ΫΤϦΛݕ஌Ͱ͖ͳ͍ • WebαʔϏεͷվमස౓͸ߴ͘ɼݕ஌Ͱ͖ͳ͍ظ͕ؒଟൃ • ϗϫΠτϦετͷ࡞੒͸WebΞϓϦՔಈલʹߦ͏ඞཁ͕͋Δ 10 WebΞϓϦՔಈதʹൃߦ͞ΕͨΫΤϦΛ༻͍ͨख๏

Slide 11

Slide 11 text

• ιʔείʔυதͷSQLΛ૊ΈཱͯΔॲཧΛղੳ͠ɼൃߦ͞ΕΔΫΤϦύλʔϯ Λྻڍ • ྻڍ͞ΕͨΫΤϦύλʔϯΛϗϫΠτϦετʹొ࿥ 11 ιʔείʔυղੳΛ༻͍ͨख๏ ղੳث ιʔείʔυ ϗϫΠτϦετ 8FCΞϓϦՔಈલ

Slide 12

Slide 12 text

• ϝϦοτ • WebΞϓϦՔಈޙɼଈ࣌ʹෆਖ਼ΫΤϦͷݕ஌͕Մೳ • σϝϦοτ • ࣮૷ґଘͳํ๏ͷͨΊɼෳ਺ͷWebΞϓϦͰ൚༻తʹར༻ෆՄ • WebΞϓϦͷ࣮૷ʹ༷ʑͳݴޠ΍ORM*͕ར༻͞ΕΔ৔߹ɼղੳثͷ
 ࣮૷͕ଟذʹΘͨΔ • WebΞϓϦͷ࣮૷ʹґଘ͠ͳ͍ํ๏͕ඞཁ 12 ιʔείʔυղੳΛ༻͍ͨख๏ͷϝϦοτɾσϝϦοτ *Scott W. Ambler, Mapping objects to relational databases What you need to know and why Ronin International, July 2000

Slide 13

Slide 13 text

3. ఏҊख๏

Slide 14

Slide 14 text

• WebΞϓϦέʔγϣϯςετΛ༻͍ͨΫΤϦͷϗϫΠτϦετࣗಈ࡞੒ख๏ • ࣗಈςετΛ༻͍ͨ։ൃϓϩηεʹϗϫΠτϦετ࡞੒Λ૊ΈࠐΉ • ։ൃϓϩηεͷมߋͤͣɼWebΞϓϦՔಈલʹϗϫΠτϦετ࡞੒Մೳ • σʔλϕʔεϓϩΩγͰΫΤϦΛऩू͠ɼϗϫΠτϦετ࡞੒ • WebΞϓϦͷ࣮૷ʹґଘ͠ͳ͍ 14 ఏҊख๏֓ཁ

Slide 15

Slide 15 text

15 ࣗಈςετΛ༻͍ͨ։ൃϓϩηε ։ൃ ςετίʔυهड़ αʔόʹ഑ஔ ࣗಈςετ /P :FT ӡ༻։࢝ ςετ੒ޭ w ৽ػೳͷ௥Ճ w طଘػೳͷमਖ਼ w 8FCΞϓϦΛಈ࡞ͤ͞Δखॱͱಈ࡞ͷ݁ՌΛهड़ w ςετίʔυΛݩʹࣗಈͰςετΛ࣮ߦ w 8FCΞϓϦͷಈ࡞͕࢓༷௨Γ͔Λ֬ೝ w ςετࣦഊɿ8FCΞϓϦͷιʔείʔυ΋͘͠͸ ςετίʔυʹ໰୊͋Γ w ςετ੒ޭɿ8FCΞϓϦ͕࢓༷௨Γʹಈ࡞ w ৽͍͠8FCΞϓϦͷιʔείʔυΛαʔόʹ഑ஔ w ৽͍͠8FCΞϓϦͷӡ༻Λ։࢝

Slide 16

Slide 16 text

16 ։ൃ ςετίʔυهड़ αʔόʹ഑ஔ ࣗಈςετ ʴ ϗϫΠτϦετ࡞੒ /P :FT ӡ༻։࢝ ςετ੒ޭ w ςετ࣌ʹൃߦ͞ΕͨΫΤϦ͔ΒϗϫΠτϦετΛࣗ ಈ࡞੒ w ҎԼΛͦΕͧΕαʔόʹ഑ஔ w ৽͍͠8FCΞϓϦͷιʔείʔυ w ৽͍͠8FCΞϓϦͷΫΤϦͷϗϫΠτϦετ ։ൃϓϩηεʹ͓͚ΔఏҊख๏ͷҐஔ෇͚ w ։ൃϓϩηεͷมߋ͕ͳ͍ w ӡ༻։࢝࣌ʹ͸ෆਖ਼ΫΤϦΛݕ஌Ͱ͖Δঢ়ଶ

Slide 17

Slide 17 text

• ΫΤϦͷϦςϥϧΛϓϨʔεϗϧμʹஔ͖׵͑ͨΫΤϦߏ଄Λొ࿥ • ΫΤϦߏ଄͕ҟͳΔ΋ͷΛݕ஌Ͱ͖Δ 17 ϗϫΠτϦετͷొ࿥಺༰ 4&-&$5'30.VTFST8)&3&JE 4&-&$5'30.VTFST8)&3&JE ϗϫΠτϦετ ςετ࣌ʹൃߦ͞ΕͨΫΤϦɿ ΫΤϦߏ଄ɿ

Slide 18

Slide 18 text

18 ϗϫΠτϦετͷݕ஌ಛੑ ςετ࣌ʹൃ ߦ͞Εͳ͍
 ΫΤϦ શͯͷΫΤϦ ςετ࣌ʹൃߦ͞ΕΔ
 ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ 8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦ ςετ࣌ͷΈൃߦ͞ΕΔ ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ ෆਖ਼ΫΤϦ • ఏҊख๏͸ςετ࣌ʹൃߦ͞ΕͨΫΤϦΛϗϫΠτϦετʹొ࿥ • ςετ࣌ʹൃߦ͞Εͳ͍ΫΤϦͱෆਖ਼ΫΤϦΛݕ஌ • ͨͩ͠ɼෆਖ਼ΫΤϦͷ಺ɼςετ࣌ͷΈൃߦ͞ΕΔΫΤϦ͸ݕ஌͞Εͳ͍ ΫΤϦͷ಺แؔ܎ਤ

Slide 19

Slide 19 text

19 ςετ௥ՃʹΑΔݕ஌ྖҬͷมԽ ςετΛ௥Ճ͢Δ͜ͱʹΑͬͯɼςετ͞Ε͍ͯΔΫΤϦྖҬΛ֦େͰ͖ɼ 8FCΞϓϦ͕ൃߦ͢ΔΫΤϦͷޡݕ஌Λ௿ݮͰ͖Δ ςετ ࣌ʹൃ ߦ͞Ε ͳ͍Ϋ ΤϦ શͯͷΫΤϦ ςετ࣌ʹൃߦ͞ΕΔ
 ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ 8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦ ςετ࣌ͷΈൃߦ͞ΕΔ ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ ෆਖ਼ΫΤϦ ςετ࣌ʹൃߦ ͞Εͳ͍
 ΫΤϦ શͯͷΫΤϦ ςετ࣌ʹൃߦ͞ΕΔ
 ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ 8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦ ςετ࣌ͷΈൃߦ͞ΕΔ ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ ෆਖ਼ΫΤϦ ֦େ

Slide 20

Slide 20 text

20 ఏҊख๏ͷઃܭ σʔλϕʔε σʔλϕʔε
 ϓϩΩγ 8FCΞϓϦ ϗϫΠτϦετ • σʔλϕʔεͷલஈʹσʔλϕʔεϓϩΩγΛ഑ஔ • ςετ࣮ߦத͸ΫΤϦΛऩूͯ͠ϗϫΠτϦετ࡞੒ • WebΞϓϦՔಈத͸ൃߦ͞ΕͨΫΤϦͱϗϫΠτϦετͷর߹͠ɼ
 ෆਖ਼ΫΤϦΛݕ஌

Slide 21

Slide 21 text

4. ࣮ݧ

Slide 22

Slide 22 text

22 ࣮ݧ؀ڥ "QQ 1SPYZ42- .Z42- w BSUJDMFςʔϒϧͷૢ࡞Λߦ͏ϝιουΛ࣮૷ w ͦΕͧΕͷϝιουͷςετΛهड़ )551 63- ૢ࡞಺༰ (&5 BSUJDMFT શͯͷBSUJDMFΛදࣔ (&5 BSUJDMFT UJUMFlz UJUMFͰݕࡧͯ͠BSUJDMFΛදࣔ ʢ42-ΠϯδΣΫγϣϯͷ੬ऑੑ͋Γʣ 1045 BSUJDMFT BSUJDMFΛͭ࡞੒ (&5 BSUJDMFTJE ಛఆͷBSUJDMFΛදࣔ 1"5$) BSUJDMFTJE BSUJDMFΛߋ৽ %&-&5& BSUJDMFTJE BSUJDMFΛ࡟আ BSUJDMF w UJUMF w DPOUFOU w BSUJDMFςʔϒϧʹUJUMFͱDPOUFOU

Slide 23

Slide 23 text

23 ࣮ݧ؀ڥ "QQ 1SPYZ42- .Z42- ProxySQL: https://proxysql.com/ • σʔλϕʔεϓϩΩγʹ͸ProxySQLΛ࠾༻ • ProxySQL͸App͕ൃߦͨ͠ΫΤϦΛऩू͠ɼΫΤϦߏ଄ʹม׵͠อଘ • ςετதʹProxySQLͰऩूͨ͠ΫΤϦߏ଄͔ΒϗϫΠτϦετΛ࡞੒

Slide 24

Slide 24 text

• ਖ਼ৗͳΫΤϦΛෆਖ਼ͱ൑அׂͨ͠߹ʢFalse positiveʣΛܭଌ • WebΞϓϦʹϒϥ΢β͔ΒखಈͰHTTPϦΫΤετΛૹΓɼͦͷաఔͰൃߦ ͞ΕͨΫΤϦΛऔಘʢΫΤϦछྨ਺ɿ17ʣ • ෆਖ਼ͳΫΤϦΛෆਖ਼ͱ൑அͰ͖ͳׂ͔ͬͨ߹ʢFalse negativeʣΛܭଌ • sqlmapΛ༻͍ͯSQLΠϯδΣΫγϣϯ߈ܸΛWebΞϓϦͷݕࡧϑΥʔϜʹ ߦ͍ɼͦͷաఔͰൃߦ͞ΕͨΫΤϦΛऔಘʢΫΤϦछྨ਺ɿ265ʣ 24 ࣮ݧ಺༰ Sqlmap: http://sqlmap.org/

Slide 25

Slide 25 text

• False positiveɿ17.65%ɼFalse negativeɿ0% • SQLΠϯδΣΫγϣϯ߈ܸʹΑΓൃੜͨ͠ෆਖ਼ΫΤϦΛશͯݕ஌ • ਖ਼ৗͳΫΤϦͷҰ෦Λޡݕ஌ 25 ࣮ݧ݁Ռ

Slide 26

Slide 26 text

• શͯͷ࣮૷ϝιουʹରͯ͠ςετΛهड़͕ͨ͠ɼFalse positive͸ൃੜ • ςετέʔεʹΑͬͯ͸ൃߦ͞Εͳ͍ΫΤϦ͕ଘࡏ͠ɼϗϫΠτϦετʹ
 ࿙Ε͕ੜ͡Δ • େن໛ͳWebΞϓϦͰ͸࣮૷ϝιου͕૿͑ɼޡݕ஌͞ΕΔΫΤϦ਺΋૿େ • ϗϫΠτϦετʹෆ଍͍ͯ͠ΔΫΤϦΛิ׬͢Δํ๏͕ඞཁ 26 False postiveͷߟ࡯

Slide 27

Slide 27 text

• SQLΠϯδΣΫγϣϯ߈ܸʹΑͬͯൃੜͨ͠શͯͷෆਖ਼ΫΤϦΛݕ஌Ͱ͖ͨɹɹɹɹ • ϗϫΠτϦετʹ͸ςετ࣌ͷΈൃߦ͞ΕΔΫΤϦؚ͕·ΕɼFalse negative ͕ൃੜ͢ΔՄೳੑ͕͋Δ • SQLΠϯδΣΫγϣϯ͸ɼWebΞϓϦ͕ൃߦ͢ΔΫΤϦʹ೚ҙͷSQLจΛ
 ஫ೖ͢Δ • ߈ܸʹΑͬͯੜ͡ΔΫΤϦͱςετ࣌ͷΈൃߦ͞ΕΔΫΤϦͷߏ଄͕Ұக͢ Δ͜ͱ͸গͳ͍ 27 False negativeͷߟ࡯

Slide 28

Slide 28 text

5. ·ͱΊͱࠓޙͷ՝୊

Slide 29

Slide 29 text

• WebΞϓϦέʔγϣϯςετΛ༻͍ͨΫΤϦͷϗϫΠτϦετࣗಈ࡞੒ख๏ ΛఏҊ • ఏҊख๏͸։ൃϓϩηεͷมߋͳ͘ɼWebΞϓϦՔಈલʹϗϫΠτϦετ ࡞੒Մೳ • ࣮ݧ݁Ռ͔ΒɼSQLΠϯδΣΫγϣϯ߈ܸʹΑͬͯൃߦ͞ΕΔෆਖ਼ΫΤϦΛ
 ݕ஌Ͱ͖Δ͜ͱΛ֬ೝ • WebΞϓϦ͕ൃߦ͢ΔΫΤϦͷҰ෦Λޡݕ஌͢Δ͜ͱΛ֬ೝ 29 ·ͱΊ

Slide 30

Slide 30 text

• ϗϫΠτϦετʹෆ଍͍ͯ͠ΔΫΤϦΛิ׬͢Δํ๏ͷݕ౼ • False positiveͷܰݮ • ϗϫΠτϦετʹؚ·ΕΔςετ࣌ͷΈൃߦ͞ΕΔΫΤϦ΁ͷରॲํ๏ͷݕ౼ • False negativeͷՄೳੑΛഉআ 30 ࠓޙͷ՝୊