Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

Avatar for Komei Nomura Komei Nomura
September 19, 2018

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

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

Avatar for Komei Nomura

Komei Nomura

September 19, 2018
Tweet

More Decks by Komei Nomura

Other Decks in Research

Transcript

  1. • ϝϦοτ • 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 ࣗಈςετΛ༻͍ͨ։ൃϓϩηε ։ൃ ςετίʔυهड़ αʔόʹ഑ஔ ࣗಈςετ /P :FT ӡ༻։࢝ ςετ੒ޭ

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

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

    ςετ࣌ͷΈൃߦ͞ΕΔ ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ ෆਖ਼ΫΤϦ • ఏҊख๏͸ςετ࣌ʹൃߦ͞ΕͨΫΤϦΛϗϫΠτϦετʹొ࿥ • ςετ࣌ʹൃߦ͞Εͳ͍ΫΤϦͱෆਖ਼ΫΤϦΛݕ஌ • ͨͩ͠ɼෆਖ਼ΫΤϦͷ಺ɼςετ࣌ͷΈൃߦ͞ΕΔΫΤϦ͸ݕ஌͞Εͳ͍ ΫΤϦͷ಺แؔ܎ਤ
  5. 19 ςετ௥ՃʹΑΔݕ஌ྖҬͷมԽ ςετΛ௥Ճ͢Δ͜ͱʹΑͬͯɼςετ͞Ε͍ͯΔΫΤϦྖҬΛ֦େͰ͖ɼ 8FCΞϓϦ͕ൃߦ͢ΔΫΤϦͷޡݕ஌Λ௿ݮͰ͖Δ ςετ ࣌ʹൃ ߦ͞Ε ͳ͍Ϋ ΤϦ શͯͷΫΤϦ

    ςετ࣌ʹൃߦ͞ΕΔ
 ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ 8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦ ςετ࣌ͷΈൃߦ͞ΕΔ ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ ෆਖ਼ΫΤϦ ςετ࣌ʹൃߦ ͞Εͳ͍
 ΫΤϦ શͯͷΫΤϦ ςετ࣌ʹൃߦ͞ΕΔ
 ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ 8FCΞϓϦέʔγϣϯ͕ൃߦ͢ΔΫΤϦ ςετ࣌ͷΈൃߦ͞ΕΔ ΫΤϦ ʢϗϫΠτϦετʹొ࿥ʣ ෆਖ਼ΫΤϦ ֦େ
  6. 20 ఏҊख๏ͷઃܭ σʔλϕʔε σʔλϕʔε
 ϓϩΩγ 8FCΞϓϦ ϗϫΠτϦετ • σʔλϕʔεͷલஈʹσʔλϕʔεϓϩΩγΛ഑ஔ •

    ςετ࣮ߦத͸ΫΤϦΛऩूͯ͠ϗϫΠτϦετ࡞੒ • WebΞϓϦՔಈத͸ൃߦ͞ΕͨΫΤϦͱϗϫΠτϦετͷর߹͠ɼ
 ෆਖ਼ΫΤϦΛݕ஌
  7. 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
  8. 23 ࣮ݧ؀ڥ "QQ 1SPYZ42- .Z42- ProxySQL: https://proxysql.com/ • σʔλϕʔεϓϩΩγʹ͸ProxySQLΛ࠾༻ •

    ProxySQL͸App͕ൃߦͨ͠ΫΤϦΛऩू͠ɼΫΤϦߏ଄ʹม׵͠อଘ • ςετதʹProxySQLͰऩूͨ͠ΫΤϦߏ଄͔ΒϗϫΠτϦετΛ࡞੒
  9. • ਖ਼ৗͳΫΤϦΛෆਖ਼ͱ൑அׂͨ͠߹ʢFalse positiveʣΛܭଌ • WebΞϓϦʹϒϥ΢β͔ΒखಈͰHTTPϦΫΤετΛૹΓɼͦͷաఔͰൃߦ ͞ΕͨΫΤϦΛऔಘʢΫΤϦछྨ਺ɿ17ʣ • ෆਖ਼ͳΫΤϦΛෆਖ਼ͱ൑அͰ͖ͳׂ͔ͬͨ߹ʢFalse negativeʣΛܭଌ •

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