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

Web Application Hardening ① (Boot Camp 2020)

Web Application Hardening ① (Boot Camp 2020)

2020年度リクルート新人ブートキャンプ エンジニアコースの講義資料です

Recruit Technologies

August 21, 2020
Tweet

More Decks by Recruit Technologies

Other Decks in Technology

Transcript

  1. ‣౻ݪ޼ LPGVKJXBSB  ‣೥౓৽ଔೖࣾ ೥໨Ͱ͢ʂ  ‣ओʹϞόΠϧͷηΩϡϦςΟΛݟ͍ͯ·͢ʂ ‣झຯ͸ήʔϜͱ͔ڝٕϓϩάϥϛϯάͱ͔$5'ͱ͔΍ͬͯ·͢ʂ XIPBNJ 2

    ʢגʣϦΫϧʔτɹϓϩμΫτ౷ׅຊ෦ɹϓϩμΫτ։ൃ౷ׅࣨ ΤϯδχΞϦϯάࣨɹ ϓϩμΫςΟϏςΟΤϯδχΞϦϯά෦ϓϥοτϑΥʔϜηΩϡϦςΟάϧʔϓ
  2. ߨٛͷεέδϡʔϧ 8 ߨٛͷઆ໌ ؀ڥߏங ͓னٳΈ    ݄ ੬ऑੑͷݕࠪ

    ੬ऑੑͷमਖ਼  Ր ੬ऑੑͷमਖ਼ ͓னٳΈ ੬ऑੑͷղઆ     
  3. ‣EPDLFSDPNQPTF͢Δ #ιʔείʔυͷมߋΛϦΞϧλΠϜʹ൓ө͍ͤͨ͞ਓ޲͚ 14 $ gcloud source repos clone ponkotsu_store --project=rtc-

    bc2020-security-? # ?ʹ͸a,b,c,d͕ೖΓ·͢ $ cd ponkotsu_store $ docker-compose up # ϩʔΧϧͰಈ͔͍ͨ͋͠ͳͨʹ ͜ͷϦϙδτϦΛQVTI͢ΔͱࣗಈతʹϦϞʔτ؀ڥ͕Ξοϓσʔτ͞Ε·͢ʂ
  4. ݕࠪର৅ͱ͢Δ੬ऑੑ 18 ‣ݕࠪର৅͸5$1͔ΒΞΫηεͰ͖Δ.BJM)PHΛআ͍ͨ͢΂ͯͷػೳʹͳΓ·͢  ࣮ࡍʹ͸ϝʔϧ͸ૹ৴͞Ε·ͤΜ͕ɺૹ৴͞Ε͍ͯΔͱࢥͬͯ։ൃ͍ͯͩ͘͠͞ɻ ࣾ಺ωοτϫʔΫ͔Β֎ʹϝʔϧ͕ૹ৴͞ΕΔػೳΛ࡞Δ͜ͱ͕೉͔ͬͨ͠ͱ͍ ͏എܠ͕͋Γ·͢ɻ  ‣ຊߨٛͰ͸ɺϏδωεϦεΫͷߴ͍੬ऑੑͷΈΛݕࠪͷର৅ͱ͠·͢ɻ w೚ҙίʔυ࣮ߦ

    w೚ҙ04ίϚϯυ࣮ߦ wҰൠϢʔβʔʹଞͷϢʔβʔͷݸਓ৘ใ͕࿙Ӯ ϝʔϧΞυϨεɺύεϫʔυϋογϡ  w؅ཧऀʹଞͷϢʔβʔͷฏจύεϫʔυ͕࿙Ӯ wσʔλϕʔεෆਖ਼ૢ࡞ wଞਓͷϢʔβʔʹͳΓ͢·ͯ͠঎඼͕ߪೖͰ͖Δ w࢒ߴΛෆਖ਼ʹૢ࡞͢Δ͜ͱ͕Ͱ͖Δ wෆਖ਼ͳߪೖ ࢒ߴෆ଍ͳͷʹങ͑ΔͳͲ  wαʔόʔͷ೚ҙͷϑΝΠϧ͕ಡΈग़ͤΔ ྫFOW͕ಡΈऔΕͨΒμϝ  wଞͷϢʔβʔͷϒϥ΢βͰ೚ҙͷKBWBTDSJQU͕࣮ߦͰ͖Δ
  5. ༗ޮͳ ηογϣϯ*% Λ͍࣋ͬͯͳ͍ ৔߹ '4ϩάΠϯը໘ '4τοϓը໘ ࣍ϖʔδ '4ύεϫʔυ๨Ε '4Ϣʔβʔ࡞੒ը໘ ˞

    ෆਖ਼ϦΫΤετ΍૬ޓʹҠಈ͢ΔϘλϯ౳Ͱ ࠶ͼಉ͡ը໘ʹભҠ͢ΔՄೳੑ͕͋Γ·͕͢লུ͍ͯ͠·͢
  6. 'ϩάΠϯ"1* 1045BQJMPHJO 24 1045BQJMPHJO ϦΫΤετϘσΟ VTFSϩάΠϯ໊ ඞਢɾจࣈྻ  QBTTXPSEύεϫʔυ ඞਢɾจࣈྻ

    Ϩεϙϯείʔυ ਖ਼ৗऴྃ ҟৗऴྃ ϨεϙϯεϘσΟ ਖ਼ৗऴྃ࣌  TFTTJPO@JEηογϣϯ*%  BENJO؅ཧऀ ͦΕҎ֎ ҟৗऴྃ࣌  NFTTBHFࣦഊཧ༝ උߟ ηογϣϯ*%Λ$PPLJFʹه࿥͢Δ BENJOΛϩʔΧϧετϨʔδʹอଘ͢Δ
  7. ‣༗ޮͳηογϣϯ*%Λอ༗͍ͯ͠ͳ͍৔߹ɺϩάΠϯը໘ '4 ʹભҠ͢Δ ‣ը໘දࣔ࣌ɺ঎඼Ұཡऔಘ"1* ' Λୟ͍ͯɺ঎඼ͷҰཡΛऔಘɾදࣔ͢Δ ‣ݕࡧϘλϯΛԡ͢ͱɺݕࡧͨ͠จࣈྻΛؚΉ঎඼ͷΈΛߜΓࠐΈɺͳ͓͔ͭ஋ஈॱͰιʔτ͢Δ '  

    ιʔτͷঢॱ߱ॱ͸஋ஈॱϑΥʔϜͰબ୒ͨ͠΋ͷʹͳΔ ‣঎඼Λબ୒͢Δͱɺ঎඼ৄࡉϖʔδ '4 ʹભҠ͢Δ ‣"%.*/ϘλϯͰ؅ཧऀը໘ '4 ΁ɺϩάΞ΢τϘλϯΛԡ͢ͱϩάΞ΢τ ' ɺӈ্ͷΞΠίϯΫϦοΫͰϢʔ βʔϖʔδ '4 ʹભҠ͢Δ '4τοϓը໘  25
  8. '঎඼औಘ"1* (&5BQJHPPET 26 (&5BQJHPPET Ϩεϙϯείʔυ  ϨεϙϯεϘσΟ  (PPETߜΓࠐΜͩ঎඼ͷϦετ ‣

    JE঎඼*% ‣ UIVNCOBJM঎඼ͷαϜωΠϧͷϑΝΠϧ໊ ‣ QSJDFՁ֨ ‣ EFTDSJQUJPO঎඼ͷઆ໌
  9. 'ը૾औಘ"1* (&5BQJJNBHF 27 (&5BQJJNBHF ΫΤϦύϥϝʔλ  pMFऔಘ͢ΔϑΝΠϧ໊ ඞਢ  

    Yը૾ͷԣ෯ ೚ҙɾจࣈྻ   Zը૾ͷॎ෯ ೚ҙɾจࣈྻ Ϩεϙϯείʔυ ਖ਼ৗऴྃ࣌  ҟৗऴྃ࣌ ϑΝΠϧ͕ଘࡏ͠ͳ͍ ϨεϙϯεϘσΟ ը૾ͷόΠφϦσʔλ
  10. ‣঎඼ͷৄࡉ৘ใΛऔಘ͠ ' ɺ঎඼ͷը૾ɺ঎඼໊ɺ঎඼ͷ஋ஈɺϨϏϡʔΛදࣔ͢Δɻ ‣ߪೖը໘΁ਐΉϘλϯΛԡ͢ͱɺߪೖը໘ '4 ΁ભҠ͢Δɻ ‣ϨϏϡʔΛॻ͘ϘλϯͰɺϨϏϡʔΛॻ͘μΠΞϩάΛදࣔ͢Δɻ  ૯߹ධՁͷ੕ΛΫϦοΫ͢Δ͜ͱͰɺධՁΛมߋ͢Δ͜ͱ͕Ͱ͖Δ 

    ϨϏϡʔΛهೖ͠ɺૹ৴͢ΔϘλϯΛԡ͢͜ͱͰɺϨϏϡʔΛૹ৴͢Δ ' ͜ͱ͕Ͱ͖Δ ‣ϨϏϡʔ͸0QFO(SBQI1SPUPDPMʹରԠ͍ͯͯ͠ɺ63-ΛషΔͱը૾ΛҰͭදࣔ͢Δ '4঎඼ৄࡉϖʔδ HPPET\HPPET@JE^ 28
  11. '঎඼ৄࡉऔಘ"1* (&5BQJHPPET\঎඼*%^ 29 (&5BQJHPPET\JE^ Ϩεϙϯείʔυ ਖ਼ৗऴྃ  ҟৗऴྃ ঎඼*%͕ଘࡏ͠ͳ͍ ϨεϙϯεϘσΟ

    ਖ਼ৗऴྃ࣌  JE঎඼*%  UJUMF঎඼λΠτϧ  EFTD঎඼ͷઆ໌  UIVNCOBJM঎඼ͷը૾ϑΝΠϧ໊  QSJDFՁ֨  SFWJFXTϨϏϡʔҰཡͷϦετ ‣ SBUJOHϨϏϡʔͷϨʔςΟϯά ‣ NFTTBHFϨϏϡʔจݴ ‣ OBNFϨϏϡʔऀ ‣ VQEBUFE@BUϨϏϡʔ೔ ҟৗऴྃ࣌ ͳ͠
  12. 'ϨϏϡʔ౤ߘ"1* 1045BQJSFWJFX 30 1045BQJSFWJFX ϦΫΤετϘσΟ  HPPE*E ඞਢɾ਺஋  

    NFTTBHFϨϏϡʔϝοηʔδ ඞਢɾจࣈྻ   SBUJOHϨʔτ ඞਢɾ਺஋ɾҎ্ҎԼ Ϩεϙϯείʔυ ਖ਼ৗऴྃ  ҟৗऴྃ  ঎඼*%͕ଘࡏ͠ͳ͍  ϦΫΤετ஋͕ෆਖ਼ ϨεϙϯεϘσΟ ਖ਼ৗऴྃ࣌ͳ͠ ҟৗऴྃ࣌  NFTTBHFࣦഊཧ༝
  13. ‣Ϣʔβʔ໊ɺ࢒ߴɺ঎඼৘ใΛऔಘ͠ ' ' දࣔ͢Δɻ ‣Ϋʔϙϯͱݸ਺Λબ୒͠ɺߪೖ͢Δ ' ɻ  Ϋʔϙϯ͸Կ౓Ͱ΋࢖༻Մೳ 

    ݸ਺͸ʙݸ·ͰೖྗՄೳ ‣Ϋʔϙϯ΍ݸ਺Λબ୒͢Δͱɺ߹ܭֹۚΛऔಘ ' ͠ɺը໘ʹ൓ө͢Δɻ ‣ߪೖϘλϯΛԡ͢ͱߪೖ׬ྃμΠΞϩά͕දࣔ͞ΕΔɻ '4ߪೖը໘ CVZ\঎඼*%^  31 ߪೖ੒ޭμΠΞϩά ߪೖࣦഊμΠΞϩά
  14. '঎඼ֹۚࢼܭࢉ"1* (&5BQJESZCVZ 32 1045BQJESZCVZ ΫΤϦύϥϝʔλ  HPPE*E঎඼*% ඞਢɾ਺஋  

    DPVOUߪೖݸ਺ ඞਢɾ਺஋   EJTDPVOUׂҾ཰ ඞਢɾ਺஋ Ϩεϙϯείʔυ ਖ਼ৗऴྃ  ҟৗऴྃ ঎඼͕ଘࡏ͠ͳ͍ ϨεϙϯεϘσΟ  QSJDF߹ܭՁ֨
  15. 'ߪೖ"1* (&5BQJCVZ 33 1045BQJCVZ ΫΤϦύϥϝʔλ  HPPE*E঎඼*% ඞਢɾ਺஋  

    DPVOUݸ਺ ඞਢɾ਺஋   EJTDPVOUׂҾ཰ ඞਢɾ਺஋ Ϩεϙϯείʔυ ਖ਼ৗऴྃ   ҟৗऴྃ ঎඼ɾϢʔβʔ͕ଘࡏ͠ͳ͍ ϦΫΤετ͕ෆਖ਼ ϨεϙϯεϘσΟ ਖ਼ৗऴྃ࣌  TUBUVTߪೖՄ൱  CBMBODFߪೖޙ࢒ߴ  QSJDFՁ֨
  16. ‣Ϣʔβʔͷ৘ใΛऔಘ͠ ' ɺ දࣔ͢Δɻ  Ϣʔβʔ*%  ද໊ࣔ  &ϝʔϧΞυϨε

     ॴ࣋ۚ  ϢʔβʔΞΠίϯը૾ ‣ߪೖཤྺΛऔಘ͠ ' ɺදࣔ͢ Δɻ  ঎඼໊  ߪೖ࣌ؒ  ݸ਺  ߹ܭֹۚ '4Ϣʔβʔϖʔδ VTFS 34
  17. 'Ϣʔβʔ৘ใऔಘ"1* (&5BQJVTFS 35 (&5BQJVTFS Ϩεϙϯείʔυ ਖ਼ৗऴྃ  ҟৗऴྃ ༗ޮͳηογϣϯ*%Λอ༗͍ͯ͠ͳ͍ ϨεϙϯεϘσΟ

    ਖ਼ৗऴྃ࣌  JEϢʔβʔ*%  FNBJMϝʔϧΞυϨε  OBNFϢʔβʔ໊  DPVQPOTอ༗Ϋʔϙϯ*%Ұཡ  DPVQPO%FUBJMTอ༗ΫʔϙϯͷৄࡉͷϦετ ‣ JEΫʔϙϯ*% ‣ EJTDPVOUׂҾ཰ ‣ EFTDSJQUJPOΫʔϙϯઆ໌จ  BENJO؅ཧऀݖݶΛอ༗͍ͯ͠Δ͔  *DPOΞΠίϯը૾ϑΝΠϧ໊ ҟৗऴྃ࣌ NFTTBHFࣦഊཧ༝ උߟ ༗ޮͳηογϣϯ*%Λอ༗͍ͯ͠Δ͜ͱ
  18. 'ߪೖཤྺऔಘ"1* (&5BQJIJTUPSZ 36 (&5BQJIJTUPSZ Ϩεϙϯείʔυ ਖ਼ৗऴྃ   ҟৗऴྃ ༗ޮͳηογϣϯ*%Λอ༗͍ͯ͠ͳ͍

    ϨεϙϯεϘσΟ ਖ਼ৗऴྃ࣌  IJTUPSZߪೖཤྺͷϦετ ‣ JEߪೖཤྺJE ‣ UJUMF঎඼໊ ‣ HPPE@JE঎඼*% ‣ VQEBUFE@BUߪೖཤྺ ‣ QSJDFߪೖՁ֨ ׂҾޙ  ‣ DPVOUߪೖݸ਺ ҟৗऴྃ࣌  NFTTBHFࣦഊཧ༝ උߟ ༗ޮͳηογϣϯ*%Λอ༗͍ͯ͠Δ͜ͱ
  19. ‣ϢʔβʔΛ࡞੒͢Δ ' ɻ  OBNFϢʔβʔ໊  ϝʔϧΞυϨε ࠓճ͸WBMJEͳ΋ͷͰͳͯ͘΋0,  

    ύεϫʔυ  ΞΠίϯը૾ ͳͯ͘΋0,  ‣ϢʔβʔΛ࡞੒͢ΔϘλϯͰϢʔβʔΛ࡞੒͢Δɻ ‣Ϣʔβʔ࡞੒׬ྃ࣌ʹμΠΞϩάΛදࣔ͢Δɻ ‣ࣦഊ࣌ʹΤϥʔϝοηʔδΛදࣔ͢Δɻ '4Ϣʔβʔ࡞੒ DSFBUF 38
  20. 'Ϣʔβʔ࡞੒"1* 1045BQJDSFBUF 39 1045BQJDSFBUF ϦΫΤετϘσΟ OBNFϢʔβʔ໊ ඞਢɾจࣈྻ  &NBJMϝʔϧΞυϨε ඞਢɾจࣈྻ

     QBTTXPSEύεϫʔυ ඞਢɾจࣈྻ  Ϩεϙϯείʔυ ਖ਼ৗऴྃ  ҟৗऴྃ Ϣʔβʔ·ͨ͸ϝʔϧΞυϨε͕ॏෳ͋Δ ͍͸ೖྗ஋͕ෆਖ਼͋Δ͍͸ෆ଍ ϨεϙϯεϘσΟ ਖ਼ৗऴྃ࣌ ͳ͠ ҟৗऴྃ࣌ NFTTBHFࣦഊཧ༝ උߟ Ϣʔβʔ࡞੒࣌ʹɺొ࿥ͨ͠ϝʔϧΞυϨεʹର ͯ͠ϝοηʔδΛૹ৴͢Δ
  21. 'શϢʔβʔऔಘ"1* (&5BQJVTFSBMM 41 (&5BQJVTFSBMM Ϩεϙϯείʔυ ਖ਼ৗऴྃ  ҟৗऴྃ Ϣʔβʔ͕ະϩάΠϯ͋Δ͍͸ҰൠϢʔβ ʔ

    ϨεϙϯεϘσΟ ਖ਼ৗऴྃ࣌ ҎԼͷ಺༰ͷ഑ྻ  JEϢʔβʔJE  OBNFϢʔβʔ໊  FNBJMϢʔβʔͷϝʔϧΞυϨε  QBTTXPSEϢʔβʔͷϋογϡԽ͞Εͨύεϫʔυ  DSFBUFE@BUϢʔβʔ࡞੒೔࣌ ҟৗऴྃ࣌ උߟ ؅ཧऀݖݶΛ࣋ͭϢʔβʔ͕ɺϩάΠϯ͍ͯ͠Δ ঢ়ଶͷΈදࣔ͞ΕΔ
  22. '4ύεϫʔυ๨Ε GPSHFU 43 ‣ϝʔϧΞυϨεΛೖྗ͠ϝʔϧΛૹ৴Ϙ λϯΛԡ͢ͱొ࿥ϢʔβʔʹϝʔϧΛૹ ৴͢Δɻ ' ϝʔϧૹ৴Մ൱ʹؔΘΒ ͣͭ͗ͷը໘΁ 

    ‣ಧ͍ͨϝʔϧͷτʔΫϯΛೖྗ͠ɺτʔ ΫϯΛૹ৴͢ΔϘλϯͰૹ৴͢Δ ' ɻ༗ޮͰ͋Ε͹ύεϫʔυೖྗը ໘΁ભҠ͢Δ ‣৽͍͠ύεϫʔυΛೖྗ͠ɺύεϫʔυ ΛϦηοτ͢ΔϘλϯͰϦηοτ͢Δ ' ɻ
  23. 'શϢʔβʔऔಘ"1* 1045BQJGPSHFUTFOE 44 1045BQJGPSHFUTFOE ϦΫΤετϘσΟ FNBJMϝʔϧΞυϨε ඞਢɾจࣈྻ Ϩεϙϯείʔυ ਖ਼ৗऴྃ 

    ҟৗऴྃ ϦΫΤετ͕ෆਖ਼ ϨεϙϯεϘσΟ ਖ਼ৗऴྃ࣌ ͳ͠ ҟৗऴྃ࣌ NFTTBHFࣦഊཧ༝ උߟ ϝʔϧΞυϨεͷଘࡏੋඇ͸ݸਓ৘ใͷͨΊɺΤ ϥʔϝοηʔδΛฦ͍ͯ͠ͳ͍ɻ
  24. 'τʔΫϯݕূ"1* 1045BQJGPSHFUWBMJEBUF 45 1045BQJGPSHFUWBMJEBUF ϦΫΤετϘσΟ UPLFOݕূ͢ΔτʔΫϯ ඞਢɾจࣈྻ Ϩεϙϯείʔυ ਖ਼ৗऴྃ 

    ҟৗऴྃ ϦΫΤετɾτʔΫϯ͕ෆਖ਼ ϨεϙϯεϘσΟ ਖ਼ৗऴྃ࣌ ͳ͠ ҟৗऴྃ࣌ NFTTBHFlԿ͔͕͓͔͍͠Α͏Ͱ͢΋͏Ұ౓τʔΫϯΛೖྗ ͯ͠Έ͍ͯͩ͘͞z උߟ ԼखʹΤϥʔϝοηʔδΛฦ͢ͱ৘ใ࿙͍͑͢Δ ͷͰΤϥʔϝοηʔδ͸୙ͯ͋͠Δ
  25. 'ύεϫʔυ࠶ઃఆ"1* 1045BQJGPSHFUSFTFUQBTT 46 1045BQJGPSHFUSFTFUQBTT ϦΫΤετϘσΟ UPLFOτʔΫϯ ඞਢɾจࣈྻ  QBTTXPSE৽͍͠ύεϫʔυ ඞਢɾจࣈྻ

    Ϩεϙϯείʔυ ਖ਼ৗऴྃ  ҟৗऴྃ ϦΫΤετɾτʔΫϯ͕ෆਖ਼ ϨεϙϯεϘσΟ ਖ਼ৗऴྃ࣌ ͳ͠ ҟৗऴྃ࣌ NFTTBHFࣦഊཧ༝ උߟ ԼखʹΤϥʔϝοηʔδΛฦ͢ͱ৘ใ࿙͍͑͢Δ ͷͰΤϥʔϝοηʔδ͸୙ͯ͋͠Δ
  26. '঎඼ݕࡧ"1* 1045BQJTFBSDI 47 1045BQJTFBSDI ϦΫΤετϘσΟ LFZXPSEݕࡧΩʔϫʔυ ෦෼Ұக ඞਢɾจࣈྻ  PSE஋ஈͷঢॱ߱ॱ

    ඞਢɾจࣈྻ Ϩεϙϯείʔυ ਖ਼ৗऴྃ  ϨεϙϯεϘσΟ ਖ਼ৗऴྃ࣌ HPPET঎඼ͷϦετ JE*% UIVNCOBJMαϜωΠϧ QSJDF஋ஈ UJUMFλΠτϧ උߟ
  27. )JOU 50 ύε ϝιου ϏδωεϦεΫͷߴ͍੬ऑੑͷ਺ BQJMPHJO 1045  BQJDSFBUF 1045

     BQJTFBSDI 1045  BQJVTFSBMM (&5  BQJCVZ 1045  BQJGPSHFUSFTFUQBTT 1045  BQJJNBHF (&5  BQJHPPET\JE^ (&5  BQJSFWJFX 1045  ͦͷଞ  ੬ऑੑ͕ෳ਺"1*ʹ·͕ͨΔ৔߹͸ݦࡏԽ͢ΔՕॴͷΈΧ΢ϯτ