SQL ๋Œ€์ฒด๋กœ ์ด์–ด์งˆ ์ˆ˜ ์žˆ๋Š” Django ์›น ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ทจ์•ฝ์ 

์ž ์žฌ์ ์œผ๋กœ SQL ์ฝ”๋“œ๋ฅผ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ (CVE-4.0.6-3.2.14)์„ ์ˆ˜์ •ํ•˜๋Š” Django ์›น ํ”„๋ ˆ์ž„์›Œํฌ 2022 ๋ฐ 34265์˜ ์ˆ˜์ • ๋ฆด๋ฆฌ์Šค๊ฐ€ ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” Trunc(kind) ๋ฐ Extract(lookup_name) ํ•จ์ˆ˜์— ์ „๋‹ฌ๋œ kind ๋ฐ lookup_name ๋งค๊ฐœ๋ณ€์ˆ˜์—์„œ ํ™•์ธ๋˜์ง€ ์•Š์€ ์™ธ๋ถ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. Lookup_name ๋ฐ kind ๊ฐ’์— ๊ฒ€์ฆ๋œ ๋ฐ์ดํ„ฐ๋งŒ ํ—ˆ์šฉํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์€ ์ทจ์•ฝ์ ์˜ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Extract ๋ฐ Trunc ํ•จ์ˆ˜์˜ ์ธ์ˆ˜์— ๋ฌธ์ž, ์ˆซ์ž, "-", "_", "(" ๋ฐ ")" ์ด์™ธ์˜ ๋ฌธ์ž ์‚ฌ์šฉ์„ ๊ธˆ์ง€ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์ฐจ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์—๋Š” ์ „์†ก๋œ ๊ฐ’์—์„œ ์ž‘์€๋”ฐ์˜ดํ‘œ๊ฐ€ ์ž˜๋ฆฌ์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ "day' FROM start_datetime)) OR 1=1;โ€”" ๋ฐ "year', start_datetime)๊ณผ ๊ฐ™์€ ๊ฐ’์„ ์ „๋‹ฌํ•˜์—ฌ SQL ๊ตฌ์„ฑ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ) ๋˜๋Š” 1=1;โ€”โ€œ. ๋‹ค์Œ ๋ฆด๋ฆฌ์Šค 4.1์—์„œ๋Š” ๋‚ ์งœ ์ถ”์ถœ ๋ฐ ์ž˜๋ฆผ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋ณดํ˜ธ๋ฅผ ๋”์šฑ ๊ฐ•ํ™”ํ•  ๊ณ„ํš์ด์ง€๋งŒ, API ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด ํƒ€์‚ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐฑ์—”๋“œ์™€์˜ ํ˜ธํ™˜์„ฑ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€