Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成手法

Ec3fcf78fa2ad21dcc48478df80e0dc4?s=47 Komei Nomura
September 19, 2018

 Webアプリケーションテストを用いたSQLクエリのホワイトリスト自動作成手法

FIT2018 第17回技術科学技術フォーラム

Ec3fcf78fa2ad21dcc48478df80e0dc4?s=128

Komei Nomura

September 19, 2018
Tweet

Transcript

  1. 12.

    • ϝϦοτ • 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
  2. 15.

    15 ࣗಈςετΛ༻͍ͨ։ൃϓϩηε ։ൃ ςετίʔυهड़ αʔόʹ഑ஔ ࣗಈςετ /P :FT ӡ༻։࢝ ςετ੒ޭ

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

    16 ։ൃ ςετίʔυهड़ αʔόʹ഑ஔ ࣗಈςετ ʴ ϗϫΠτϦετ࡞੒ /P :FT ӡ༻։࢝

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

    18 ϗϫΠτϦετͷݕ஌ಛੑ ςετ࣌ʹൃ ߦ͞Εͳ͍
 ΫΤϦ શͯͷΫΤϦ ςετ࣌ʹൃߦ͞ΕΔ
 ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ 8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦ

    ςετ࣌ͷΈൃߦ͞ΕΔ ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ ෆਖ਼ΫΤϦ • ఏҊख๏͸ςετ࣌ʹൃߦ͞ΕͨΫΤϦΛϗϫΠτϦετʹొ࿥ • ςετ࣌ʹൃߦ͞Εͳ͍ΫΤϦͱෆਖ਼ΫΤϦΛݕ஌ • ͨͩ͠ɼෆਖ਼ΫΤϦͷ಺ɼςετ࣌ͷΈൃߦ͞ΕΔΫΤϦ͸ݕ஌͞Εͳ͍ ΫΤϦͷ಺แؔ܎ਤ
  5. 19.

    19 ςετ௥ՃʹΑΔݕ஌ྖҬͷมԽ ςετΛ௥Ճ͢Δ͜ͱʹΑͬͯɼςετ͞Ε͍ͯΔΫΤϦྖҬΛ֦େͰ͖ɼ 8FCΞϓϦ͕ൃߦ͢ΔΫΤϦͷޡݕ஌Λ௿ݮͰ͖Δ ςετ ࣌ʹൃ ߦ͞Ε ͳ͍Ϋ ΤϦ શͯͷΫΤϦ

    ςετ࣌ʹൃߦ͞ΕΔ
 ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ 8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦ ςετ࣌ͷΈൃߦ͞ΕΔ ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ ෆਖ਼ΫΤϦ ςετ࣌ʹൃߦ ͞Εͳ͍
 ΫΤϦ શͯͷΫΤϦ ςετ࣌ʹൃߦ͞ΕΔ
 ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ 8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦ ςετ࣌ͷΈൃߦ͞ΕΔ ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ ෆਖ਼ΫΤϦ ֦େ
  6. 20.

    20 ఏҊख๏ͷઃܭ σʔλϕʔε σʔλϕʔε
 ϓϩΩγ 8FCΞϓϦ ϗϫΠτϦετ • σʔλϕʔεͷલஈʹσʔλϕʔεϓϩΩγΛ഑ஔ •

    ςετ࣮ߦத͸ΫΤϦΛऩूͯ͠ϗϫΠτϦετ࡞੒ • WebΞϓϦՔಈத͸ൃߦ͞ΕͨΫΤϦͱϗϫΠτϦετͷর߹͠ɼ
 ෆਖ਼ΫΤϦΛݕ஌
  7. 21.
  8. 22.

    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
  9. 23.

    23 ࣮ݧ؀ڥ "QQ 1SPYZ42- .Z42- ProxySQL: https://proxysql.com/ • σʔλϕʔεϓϩΩγʹ͸ProxySQLΛ࠾༻ •

    ProxySQL͸App͕ൃߦͨ͠ΫΤϦΛऩू͠ɼΫΤϦߏ଄ʹม׵͠อଘ • ςετதʹProxySQLͰऩूͨ͠ΫΤϦߏ଄͔ΒϗϫΠτϦετΛ࡞੒
  10. 24.

    • ਖ਼ৗͳΫΤϦΛෆਖ਼ͱ൑அׂͨ͠߹ʢFalse positiveʣΛܭଌ • WebΞϓϦʹϒϥ΢β͔ΒखಈͰHTTPϦΫΤετΛૹΓɼͦͷաఔͰൃߦ ͞ΕͨΫΤϦΛऔಘʢΫΤϦछྨ਺ɿ17ʣ • ෆਖ਼ͳΫΤϦΛෆਖ਼ͱ൑அͰ͖ͳׂ͔ͬͨ߹ʢFalse negativeʣΛܭଌ •

    sqlmapΛ༻͍ͯSQLΠϯδΣΫγϣϯ߈ܸΛWebΞϓϦͷݕࡧϑΥʔϜʹ ߦ͍ɼͦͷաఔͰൃߦ͞ΕͨΫΤϦΛऔಘʢΫΤϦछྨ਺ɿ265ʣ 24 ࣮ݧ಺༰ Sqlmap: http://sqlmap.org/