์›น ์ทจ์•ฝ์ 

2024-11-19

ํ•™์Šต ๋ฐฐ๊ฒฝ

  • WAF ์ ์šฉ ์‹œ cloud์˜ ๊ด€๋ฆฌํ˜• ๊ทœ์น™์— ๋”ฐ๋ผ ์ •์ƒ์ ์ธ ์š”์ฒญ๋“ค์ด ์‹คํŒจ๋กœ ๋๋‚˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด, ํ˜น์‹œ ๋ชจ๋ฅผ ํ•ดํ‚น์— ๋Œ€๋น„ํ•ด ์›น ์ทจ์•ฝ์ ์— ๋Œ€ํ•ด ์ •๋ฆฌํ•˜๊ณ ์ž ํ•œ๋‹ค.

๊ณผ๊ฑฐ ์ž๋ฃŒ ๊ธฐ์ค€ ์ƒ์œ„ 5๊ฐœ์˜ ์›น ๋ณด์•ˆ ์ทจ์•ฝ์ 

1. SQL Injection (SQLI)

SQL, NoSQL ์—์„œ ์‹ ๋ขฐํ•  ์ˆ˜ ์—†๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋ช…๋ น ๋˜๋Š” ์ฟผ๋ฆฌ์˜ ์ผ๋ถ€๋กœ ์ „์†ก๋ผ ์‹คํ–‰๋˜๋Š” ์ทจ์•ฝ์ 

  • ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์˜ˆ๋ฅผ ๋“ค๋ฉด SQL๋ฌธ์„ ํ†ตํ•ด DB์— ์ ‘๊ทผํ•˜์—ฌ ๋ฏผ๊ฐ์ •๋ณด๊ฐ€ ์œ ์ถœ๋  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ 

    • admin table์„ ์กฐํšŒํ•˜๋Š” query์—์„œ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ or 1=1์„ ํฌํ•จํ•œ ๋ฌธ์ž์—ด์„ ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ admin table์˜ ๋ชจ๋“  ๋‚ด์šฉ์ด ์กฐํšŒ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ์‹์œผ๋กœ ์‚ฌ์šฉ์ž ์ •๋ณด๊ฐ€ ์œ ์ถœ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Œ
    • ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ; delete from admin; ์ด๋Ÿฐ์‹์˜ ๋ฌธ์ž์—ด์„ ๋„˜๊ธฐ๋Š” ๊ฒฝ์šฐ ์ค‘์š”ํ•œ ํ…Œ์ด๋ธ” ์ •๋ณด๊ฐ€ ์‚ญ์ œ๋  ์ˆ˜๋„ ์žˆ๋‹ค
    • ์ผ๋ถ€๋Ÿฌ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ๋„˜๊ธฐ๋ฉด DB์˜ ๊ตฌ์กฐ๊ฐ€ ์œ ์ถœ ๋  ์ˆ˜๋„ ์žˆ๋‹ค
  • JPA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด๋Ÿฌํ•œ Injection์—์„œ ์•ˆ์ „ํ•˜๋‹ค (์ถœ์ฒ˜ link)

    • JPA๊ฐ€ ๊ตฌํ˜„ํ•˜๋Š” hibernate์˜ ๊ฒฝ์šฐ PreparedStatement๋ฅผ ์‚ฌ์šฉ

      -> ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ œ์™ธํ•œ sql ๊ตฌ๋ฌธ์„ ๋ฏธ๋ฆฌ ์‹คํ–‰๊ณ„ํš์— ๋„ฃ์–ด๋‘๊ณ , ์‹คํ–‰์‹œ์—๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ๋งŒ ๊ฐˆ์•„๋ผ์›Œ์„œ ์‚ฌ์šฉ

      -> ํŒŒ๋ผ๋ฏธํ„ฐ์— sql๋ฌธ์ด ํฌํ•จ๋˜์–ด ์žˆ์–ด๋„ ๋ฌธ์ž์—ด๋กœ ์ฒ˜๋ฆฌ๋จ

    • ๋‹จ, ์ง์ ‘ EntityManager์— query๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์œ ์˜ํ•ด์•ผํ•จ

  • myBatis๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” #{} ๋ฐฉ์‹์œผ๋กœ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋งคํ•‘ํ•˜๋ฉด PreparedStatement๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ${}๋ฐฉ์‹์œผ๋กœ ๋งคํ•‘ํ•˜๋ฉด Statement๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์–ด SQLI์— ์œ ์˜ํ•ด์•ผ ํ•œ๋‹ค

    (์ถœ์ฒ˜ link)

2. XSS(Cross-Site Scripting)

์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‚ฝ์ž…๋œ ๊ฒŒ์‹œ๊ธ€ ํด๋ฆญ์„ ์œ ๋„ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •๋ณด๋ฅผ ํƒˆ์ทจ

  • Reflected XSS

    XSS ๊ณต๊ฒฉ์„ ์œ„ํ•œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋œ url์„ ๊ณต๊ฒฉ ๋Œ€์ƒ์ž์—๊ฒŒ ๋…ธ์ถœ์‹œํ‚ค๋ฉด ๊ณต๊ฒฉ ๋Œ€์ƒ์ž๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ง์ ‘ ์‹คํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค

  • Stored XSS

    ๊ณต๊ฒฉ์ž๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ฒŒ์‹œ๊ธ€ ๋“ฑ db์— ์ €์žฅ๋  ์ˆ˜ ์žˆ๋Š” ๊ณณ์— ์ €์žฅํ•œ ๋’ค ๊ณต๊ฒฉ ๋Œ€์ƒ์ž๊ฐ€ ํ•ด๋‹น ๊ฒŒ์‹œ๊ธ€ ๋“ฑ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ์œ ๋„ํ•œ๋‹ค ์ด ๋˜ํ•œ ๊ณต๊ฒฉ ๋Œ€์ƒ์ž๊ฐ€ ์„œ๋ฒ„๋กœ ์Šคํฌ๋ฆฝํŠธ ๋‚ด์šฉ์„ ์ „์†กํ•˜๊ฒŒ ๋œ๋‹ค

  • DOM Based XSS

    ์ฟผ๋ฆฌ๋กœ ์ง์ ‘์ ์ธ DOM์˜ ์ œ์–ด๋ฅผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ณต๊ฒฉ์ž๋Š” client-side์— ์ƒ์„ฑ๋œ DOM์„ ์ง์ ‘ ์ œ์–ดํ•˜์—ฌ ๊ณต๊ฒฉ์„ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋‹ค
    

์ถœ์ฒ˜ link

3. ์ทจ์•ฝํ•œ ์ธ์ฆ ๋ฐ ์„ธ์…˜๊ด€๋ฆฌ

์ถœ์ฒ˜ link

  • ์ทจ์•ฝํ•œ ๊ฐœ์ฒด ์ˆ˜์ค€ ์ธ๊ฐ€

    • ์‚ฌ์šฉ์ž๊ฐ€ ํ˜ธ์ถœํ•˜๋ ค๋Š” ๊ธฐ๋Šฅ, ๋ฐ์ดํ„ฐ ๋Œ€์ƒ์— ์ ‘๊ทผํ•  ๋•Œ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถ€์—ฌ๋œ ๊ถŒํ•œ์— ๋งž๊ฒŒ ์œ ํšจ์„ฑ ์ฒดํฌ๊ฐ€ ์ด๋ฃจ์–ด์ ธ์•ผ ํ•œ๋‹ค
    • /shops/{shopName}/data.json ๊ฐ™์€ ์š”์ฒญ์˜ ๊ฒฝ์šฐ ์ œ๋Œ€๋กœ ๊ถŒํ•œ ์ฒดํฌ๋ฅผ ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ณต๊ฒฉ์ž๊ฐ€ ๋‹ค๋ฅธ ๊ฐ€๊ฒŒ์˜ ์ •๋ณด๋ฅผ ๋นผ๋‚ผ ์ˆ˜ ์žˆ๋‹ค
  • ์ทจ์•ฝํ•œ ์‚ฌ์šฉ์ž ์ธ์ฆ

    • ๊ณต๊ฒฉ์ž๊ฐ€ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ฌด์ž‘์œ„๋กœ ๋Œ€์ž…ํ•ด ๋กœ๊ทธ์ธ ์‹œ๋„๋ฅผ ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ(๋กœ๊ทธ์ธ ์‹คํŒจ ํšŒ์ˆ˜๊ฐ€ ์ •ํ•ด์ง€์ง€ ์•Š์Œ)
    • ์ทจ์•ฝํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ—ˆ์šฉํ•œ ๊ฒฝ์šฐ
    • ํ† ํฐ์˜ ์ง„์œ„ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ์‚ฌ์šฉ ๋งŒ๊ธฐ ๊ธฐ๊ฐ„์„ ๊ทœ์ •ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ
  • ์ทจ์•ฝํ•œ ๊ธฐ๋Šฅ ์ˆ˜์ค€ ์ธ๊ฐ€

    • ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ๊ด€๋ฆฌ์ž API์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
    • ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ ์ƒ์„ฑ/๋ณ€๊ฒฝ/์‚ญ์ œ ๋“ฑ ๋ถ€์—ฌ๋ฐ›์ง€ ์•Š์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
    • ๊ทธ๋ฃน๋งˆ๋‹ค ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ๊ฒฝ์šฐ ๊ฐ„๋‹จํ•œ URL ์ž…๋ ฅ๋งŒ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ

4. CSRF(Cross Script Request Forgery)

์ถœ์ฒ˜ link

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž์‹ ์˜ ์˜์ง€์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๊ณต๊ฒฉ์ž๊ฐ€ ์˜๋„ํ•œ ํ–‰์œ„(๋ฐ์ดํ„ฐ ์ˆ˜์ •, ์‚ญ์ œ, ๋“ฑ๋ก ๋“ฑ)์„ ์„œ๋ฒ„์— ์š”์ฒญํ•˜๊ฒŒ ๋˜๋Š” ๊ณต๊ฒฉ
  • ๊ณต๊ฒฉ์ž๋Š” ์ฟ ํ‚ค ๊ธฐ๋ฐ˜์˜ ์„œ๋ฒ„ ์„ธ์…˜ ์ •๋ณด๋ฅผ ํš๋“ํ•œ ๋’ค ์‚ฌ์šฉ์ž๊ฐ€ ์•…์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋„๋ก ์œ ๋„ํ•œ๋‹ค
  • Referer check๋ฅผ ํ†ตํ•ด ๊ณต๊ฒฉ ๋ฐฉ์–ด๊ฐ€ ๊ฐ€๋Šฅํ•จ
  • api ์„œ๋ฒ„์˜ ๊ฒฝ์šฐ ์„ธ์…˜ ์—†์ด stateless ์ƒํƒœ๋กœ ์šด์˜๋˜๊ธฐ ๋•Œ๋ฌธ์— csrf ๋Œ€์‘์„ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค(์ถœ์ฒ˜ link)

5. ๋ถˆ์•ˆํ•œ ์•”ํ˜ธํ™”

๋ฏผ๊ฐ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์—ฌ DB์— ์ €์žฅํ•˜์—ฌ ์กฐ์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค


OWASP-10 2023 version

์ถœ์ฒ˜ : LG CNS ๋ธ”๋กœ๊ทธ

OWASP-10

  • Open Web Application Security Project ๋‹จ์ฒด์—์„œ ์ œ๊ณตํ•˜๋Š” ์›น์•ฑ ๋ณด์•ˆ ์ทจ์•ฝ์  TOP 10

image

  • ๊ธฐ์กด์— ์ต์ˆ™ํ•˜๊ฒŒ ๋“ค์–ด๋ดค๋˜ Injection์ด ์‚ญ์ œ๋˜๊ณ  ์ƒˆ๋กœ์šด ์ทจ์•ฝ์ ๋“ค์ด ์ถ”๊ฐ€๋œ ๊ฒƒ์ด ํฅ๋ฏธ๋กญ๋‹ค
  • ์›น ๋ณด์•ˆ ์œ ์ง€๋ฅผ ์œ„ํ•ด ์ด๋Ÿฐ ์ž๋ฃŒ๋“ค์„ ์ฃผ๊ธฐ์ ์œผ๋กœ ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค

SSRF(Server-Side Request Forgery)

์ถœ์ฒ˜ link

๊ณต๊ฒฉ์ž๊ฐ€ ์‚ฌ์šฉ์ž๊ฐ€ ์•„๋‹Œ ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ํŠน์ • ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ๊ณต๊ฒฉํ•˜๋Š” ์œ ํ˜•

client๊ฐ€ ๋ฐ”๋กœ ๋‚ด๋ถ€ resource์— ์ ‘๊ทผํ•  ์ˆ˜๋Š” ์—†์ง€๋งŒ ์„œ๋ฒ„์—๋Š” ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด resource๋ฅผ ๊ณต๊ฒฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค

  • ๋…ผ ๋ธ”๋ผ์ธ๋“œ SSRF : url ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ url์„ ๋„˜๊ธฐ๋Š” ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ ?url=file:///etc/passwd ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์˜ password ๊ฐ™์€ ์ •๋ณด์— ์ ‘๊ทผ
  • ๋ธ”๋ผ์ธ๋“œ SSRF : ๋ฐ˜๋“œ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ณ  ์„œ๋ฒ„ ๋ฐฑ์—”๋“œ์— ๋ฌด๋‹จ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ํ•˜๋Š” ๊ณต๊ฒฉ(์„œ๋ฒ„์˜ ์–ด๋–ค ๊ฒƒ์„ ๋ณ€๊ฒฝ, ํŒŒ์ผ ์ˆ˜์ •/์‚ญ์ œ, ๊ถŒํ•œ ๋ณ€๊ฒฝ ๋“ฑ) ๋…ผ ๋ธ”๋ผ์ธ๋“œ SSRF ์˜ˆ์‹œ์™€ ๋น„์Šทํ•˜๊ฒŒ url ํŒŒ๋ผ๋ฏธํ„ฐ์— ์™ธ๋ถ€ ์„œ๋ฒ„์˜ ๋น„์ •์ƒ์ ์œผ๋กœ ํฐ ์šฉ๋Ÿ‰์˜ ํŒŒ์ผ ์ฃผ์†Œ๋ฅผ ๋„ฃ๊ฒŒ ๋˜๋ฉด ๊ฒฐ๊ตญ ์„œ๋ฒ„๋ฅผ ๋ฉˆ์ถ”๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค
  • url์„ ํ†ต์ฑ„๋กœ ๋„˜๊ธฐ์ง€ ์•Š๊ณ  ๊ด€๋ จ ๋ฆฌ์†Œ์Šค์˜ id๋งŒ ๋„˜๊ธฐ๋„๋ก ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ทจ์•ฝ์ ์„ ์™„ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค

๊ทธ๋ฐ–์˜ ์ทจ์•ฝ์ 

LFI, RFI

  • LFI(Local File Inclusion)
    • ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋กœ์ปฌ ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋„๋ก ์œ ๋„
    • ์ผ๋ฐ˜์ ์œผ๋กœ ๊ฒฝ๋กœ ์กฐ์ž‘ ๊ธฐ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ๊ณต๊ฒฉ(../../....)
  • RFI(Remote File Inclusion)
    • ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์™ธ๋ถ€ ํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋„๋ก ์œ ๋„
    • url์— ์™ธ๋ถ€ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๊ทธ ํŒŒ์ผ์— ์žˆ๋Š” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ณต๊ฒฉ
  • ํ•ด๊ฒฐ ๋ฐฉ์•ˆ
    • ๊ฒฝ๋กœ ์ด๋™ ๋ฌธ์ž๋ฅผ ์‚ฝ์ž…ํ•  ์ˆ˜ ์—†๋„๋ก ํ•„ํ„ฐ๋ง (../)
    • realpath๋ฅผ ํ†ตํ•œ ๊ฒฝ๋กœ์—์„œ๋งŒ ๊ฐ’์„ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •(์œ„์—๊บผ ์‚ฌ์šฉ ๋ชปํ•˜๋„๋ก)
    • ํŒŒ์ผ ํ™•์žฅ์ž ๊ฒ€์‚ฌ
/end of ์›น ์ทจ์•ฝ์ 
CONTENT LISTMERRI๏ผ‡s DEVELOG
Spring Security - OAuth2.0 ์‚ฌ์šฉ ์‹œ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋ฆฌ์†Œ์Šค ์„œ๋ฒ„๋ฅผ ์ง€์›ํ•˜๊ธฐ
2024-12-10