Dockerを使って OSコマンドインジェクションが出来るSlack botを作った話 / os-command-injection-bot

00766b8e1f9c2665cf7fd29f9cf558df?s=47 odanado
November 02, 2016

Dockerを使って OSコマンドインジェクションが出来るSlack botを作った話 / os-command-injection-bot

00766b8e1f9c2665cf7fd29f9cf558df?s=128

odanado

November 02, 2016
Tweet

Transcript

  1. DockerΛ࢖ͬͯ OSίϚϯυΠϯδΣΫγϣϯ͕ ग़དྷΔSlack botΛ࡞ͬͨ࿩

  2. 1 DockerΛ࢖ͬͯ OSίϚϯυΠϯδΣΫγϣϯ͕ ग़དྷΔSlack botΛ࡞ͬͨ࿩

  3. 2 DockerΛ࢖ͬͯ OSίϚϯυΠϯδΣΫγϣϯ͕ ग़དྷΔSlack botΛ࡞ͬͨ࿩

  4. Dockerͱ͸ • ίϯςφܕԾ૝ԽΛߦ͏ιϑτ΢ΣΞ • 2013೥ʹొ৔ • GoݴޠͰॻ͔Ε͍ͯΔ • ίϯςφͱ͸Ծ૝OSͷ͜ͱ •

    Ұ୆ͷϚγϯͰෳ਺ͷOS͕ಈ࡞͢Δ • Virtual BoxͳͲͷԾ૝Ϛγϯͱ͸গ͠ҧ͏ 3
  5. Dockerͱ͸ 4 ϕου ϕου ϕου τΠϨ ෩࿊ Ω ο ν

    ϯ ҰݢՈ ෺ཧϚγϯ ௞ିϚϯγϣϯ Ծ૝Ϛγϯ γΣΞϋ΢ε ίϯςφ *ࢀߟ: Docker࣮ઓ׆༻ ΨΠυ(ϚΠφϏग़൛)
  6. Dockerͱ͸ ίϯςφ Ծ૝Ϛγϯ OSͷىಈ ଎͍ ஗͍ Ϧιʔεফඅ গͳ͍ ଟ͍ OSͷछྨ

    LinuxͷΈ ͳΜͰ΋ 5 ίϯςφ(Docker)ͱԾ૝Ϛγϯ(Virtual Box౳)ͷൺֱ *ࢀߟ: Docker࣮ઓ׆༻ ΨΠυ(ϚΠφϏग़൛)
  7. 6 DockerΛ࢖ͬͯ OSίϚϯυΠϯδΣΫγϣϯ͕ ग़དྷΔSlack botΛ࡞ͬͨ࿩

  8. 7 DockerΛ࢖ͬͯ OSίϚϯυΠϯδΣΫγϣϯ͕ ग़དྷΔSlack botΛ࡞ͬͨ࿩

  9. OSίϚϯυΠϯδΣΫγϣϯͱ͸ • Ϣʔβ͔ΒͷೖྗΛड͚෇͚ΔWebαΠτͰ ϓϩάϥϜͷύϥϝʔλʹOSʹର͢Δ ίϚϯυΛฆΕͤͯ͞ෆਖ਼ૢ࡞͢Δ߈ܸ 8 ෆਖ਼ͳίϚϯυ ΫϥοΧʔ ੬ऑੑͷ͋Δ Webαʔό

    ෆਖ਼ૢ࡞ ৘ใ࿙Ӯ
  10. OSίϚϯυΠϯδΣΫγϣϯͱ͸ • ೚ҙίϚϯυΛ࣮ߦ͞ΕΔͷ͸ॏେͳ੬ऑੑ • ύεϫʔυͷ࿙Ӯ • cat /etc/passwd • ൿີ伴ͷ࿙Ӯ

    • cat ~/.ssh/id_rsa • αʔόͷσʔλશফ͠ • rm –rf / 9
  11. 10 DockerΛ࢖ͬͯ OSίϚϯυΠϯδΣΫγϣϯ͕ ग़དྷΔSlack botΛ࡞ͬͨ࿩

  12. 11 DockerΛ࢖ͬͯ OSίϚϯυΠϯδΣΫγϣϯ͕ ग़དྷΔSlack botΛ࡞ͬͨ࿩

  13. Slack botͱ͸ • Slack͸օ͞Μ͓ೃછΈͷνϟοτπʔϧ • botͱ͸ػցʹΑΔࣗಈൃݴγεςϜ • αʔϏε͔Βఏڙ͞Ε͍ͯΔAPIΛୟ͍ͯ࡞Δ • ࠓճ͸Python੡ͷslackhq/python-rtmbotͱ͍͏

    FrameworkΛ࢖ͬͨ 12
  14. Slack botͱ͸ • ιʔείʔυ • https://github.com/odanado/slackbot-os- command-injection 13 OSίϚϯυΠϯδΣΫγϣϯ͕ ग़དྷΔSlack

    botͷ͍Β͢ͱ
  15. શମͷྲྀΕ 14 @෇͖Ͱ ίϚϯυૹ৴

  16. σϞ • ͝ҰॹʹͲ͏ͧ • Կͯ͠΋େৎ෉Ͱ͢ • ϋοΩϯά͠Α͏ʂʂ 15 ࣮ࡍʹOSίϚϯυΠϯδΣΫγϣϯΛ ߦ͍·͢

  17. ࠓޙ • bashҎ֎ͷݴޠΛ࣮ߦͰ͖ΔΑ͏ʹͳΔ • Cݴޠ • Java • Python •

    Ruby • PHP • DockerͷಛੑΛ׆͔ͯ͠෦಺αʔόΛ෦һ͕ ࣗ༝ʹ࢖͑ΔΑ͏ʹ͠·͢ • ࡞ۀ͕஗Ε͍ͯͯ΋͏͠͹Β͕͔͔࣌ؒ͘Γ·͢ • ͝ΊΜͳ͍͞... 16
  18. ·ͱΊ • Docker͸ίϯςφԾ૝ܕԽΛߦ͏πʔϧ • ߴ଎ʹىಈ͠ɼϦιʔεͷফඅྔ͕গͳ͍ • ࣗ෼͚ͩͷ؀ڥ͕खʹೖΔ • OSίϚϯυΠϯδΣΫγϣϯ͸ॏେͳ੬ऑੑ •

    ύεϫʔυͷ࿙Ӯ΍σʔλվ᜵ͷةݥ • Slack bot͸Slack্Ͱͷࣗಈൃݴπʔϧ • ࠓճ͸Python੡ͷFrameworkΛ࢖ͬͨ 17