Skip to content

Latest commit

ย 

History

History
31 lines (18 loc) ยท 1.26 KB

File metadata and controls

31 lines (18 loc) ยท 1.26 KB

Django QuerySet.order_by() SQL Injection (CVE-2021-35042)

ํ™”์ดํŠธํ–‡ ์Šค์ฟจ 2๊ธฐ - ๋ฌธ์„œ์ง„ (@anstjwls)


์š”์•ฝ

  • Django์˜ QuerySet API์ธ order_by์—์„œ ์ž…๋ ฅ๊ฐ’์„ ๊ฒ€์ฆํ•˜์ง€ ์•Š์•„, SQL injection์ด ๊ฐ€๋Šฅ
  • DB์˜ ๋ฒ„์ „, ํ…Œ์ด๋ธ” ์ด๋ฆ„ ๋“ฑ ์„ธ๋ถ€ ๋‚ด์šฉ๋“ค์„ ๊ณต๊ฒฉ์ž๊ฐ€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

ํ™˜๊ฒฝ ๊ตฌ์„ฑ ๋ฐ ์‹คํ–‰

  • docker compose up -d๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์‹คํ–‰ (django 3.2.4๋ฒ„์ „)
  • your-ip:8000/vuln์— ์ ‘์†ํ•˜์—ฌ db ์ •๋ณด ํ™•์ธ
  • python3 poc.py your-ip:8080/๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋ฐ˜ํ™˜ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์Œ
    • SQL ์ธ์ ์…˜์„ ํ†ตํ•ด ๊ฒฐ๊ณผ์—์„œ "HTTP ์‘๋‹ต ๋ณธ๋ฌธ" ์˜ DB๋ฒ„์ „์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ

๊ฒฐ๊ณผ

์Šคํฌ๋ฆฐ์ƒท 2024-05-06 ์˜ค์ „ 12 09 52

์ •๋ฆฌ

SQL injection ๊ณต๊ฒฉ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ •๋ณด๋ฅผ ๋…ธ์ถœ์‹œํ‚ค๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ฌ์ง€์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์™ธ๋ถ€์˜ ์‹œ์Šคํ…œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ์†์ƒ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž…๋ ฅ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ๋งค๊ฐœ ๋ณ€์ˆ˜ํ™”๋œ ์ฟผ๋ฆฌ ์‚ฌ์šฉ, ORM(Object-Relational Mapping) ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ ๋“ฑ์˜ ๋ณด์•ˆ ์กฐ์น˜๋ฅผ ์ ์šฉํ•ด์•ผ ํ•œ๋‹ค.