์ž˜๋ชป๋œ ๋ณ„์นญ ๋ธ”๋ก ์„ค์ •์ด ์žˆ๋Š” Nginx ๊ตฌ์„ฑ ์ทจ์•ฝ์„ฑ

nginx๊ฐ€ ์žˆ๋Š” ์ผ๋ถ€ ์„œ๋ฒ„๋Š” 2018๋…„ Blackhat ์ปจํผ๋Ÿฐ์Šค์—์„œ ์ œ์•ˆ๋œ Nginx Alias โ€‹โ€‹Traversal ๊ธฐ์ˆ ์— ์—ฌ์ „ํžˆ ์ทจ์•ฝํ•˜๋ฉฐ "alias" ์ง€์‹œ๋ฌธ์— ์ง€์ •๋œ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ ์™ธ๋ถ€์— ์žˆ๋Š” ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ "/" ๋ฌธ์ž๋กœ ๋๋‚˜์ง€ ์•Š๊ณ  "alias"๊ฐ€ "/"๋กœ ๋๋‚˜๋Š” "location" ๋ธ”๋ก ๋‚ด๋ถ€์— ๋ฐฐ์น˜๋œ "alias" ์ง€์‹œ๋ฌธ์ด ์žˆ๋Š” ๊ตฌ์„ฑ์—์„œ๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๋ณ„์นญ ๋ธ”๋ก ์„ค์ •์ด ์žˆ๋Š” Nginx ๊ตฌ์„ฑ ์ทจ์•ฝ์„ฑ

๋ฌธ์ œ์˜ ๋ณธ์งˆ์€ ์š”์ฒญ๋œ ๊ฒฝ๋กœ๋ฅผ ์œ„์น˜ ์ง€์‹œ์–ด์˜ ๋งˆ์Šคํฌ์™€ ์ผ์น˜์‹œํ‚ค๊ณ  ์ด ๋งˆ์Šคํฌ์— ์ง€์ •๋œ ๊ฒฝ๋กœ์˜ ์ผ๋ถ€๋ฅผ ์ž˜๋ผ๋‚ธ ํ›„ ์š”์ฒญ๋œ ๊ฒฝ๋กœ๋ฅผ ์ฒจ๋ถ€ํ•˜์—ฌ ๋ณ„์นญ ์ง€์‹œ์–ด๊ฐ€ ์žˆ๋Š” ๋ธ”๋ก์— ๋Œ€ํ•œ ํŒŒ์ผ์„ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์œ„์— ํ‘œ์‹œ๋œ ์ทจ์•ฝํ•œ ๊ตฌ์„ฑ์˜ ์˜ˆ์—์„œ ๊ณต๊ฒฉ์ž๋Š” "/img../test.txt" ํŒŒ์ผ์„ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด ์š”์ฒญ์€ "/img" ์œ„์น˜์— ์ง€์ •๋œ ๋งˆ์Šคํฌ์™€ ์ผ์น˜ํ•˜๊ณ  ๋‚˜๋จธ์ง€ ํ…Œ์ผ "../ test.txt"๋Š” ๋ณ„์นญ ์ง€์‹œ๋ฌธ "/var/images/"์˜ ๊ฒฝ๋กœ์— ์ฒจ๋ถ€๋˜๋ฉฐ ๊ฒฐ๊ณผ์ ์œผ๋กœ "/var/images/../test.txt" ํŒŒ์ผ์ด ์š”์ฒญ๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ณต๊ฒฉ์ž๋Š” "/var/images/"์˜ ํŒŒ์ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ "/var" ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด nginx ๋กœ๊ทธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๋ ค๋ฉด "/img../log/" ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. nginx/access.log".

๋ณ„์นญ ์ง€์‹œ๋ฌธ์˜ ๊ฐ’์ด "/" ๋ฌธ์ž๋กœ ๋๋‚˜์ง€ ์•Š๋Š” ๊ตฌ์„ฑ(์˜ˆ: "alias /var/images;")์—์„œ ๊ณต๊ฒฉ์ž๋Š” ์ƒ์œ„ ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์ง€๋งŒ /var์—์„œ ๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ด๋ฆ„์€ ๊ตฌ์„ฑ์—์„œ ์ง€์ •๋œ ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด "/img.old/test.txt"๋ฅผ ์š”์ฒญํ•˜๋ฉด "var/images.old/test.txt" ๋””๋ ‰ํ† ๋ฆฌ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

GitHub์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ถ„์„ํ•œ ๊ฒฐ๊ณผ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” nginx ๊ตฌ์„ฑ ์˜ค๋ฅ˜๊ฐ€ ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ ์—ฌ์ „ํžˆ ๋ฐœ๊ฒฌ๋˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋ฌธ์ œ์˜ ์กด์žฌ๋Š” Bitwarden ์•”ํ˜ธ ๊ด€๋ฆฌ์ž์˜ ๋ฐฑ์—”๋“œ์—์„œ ์‹๋ณ„๋˜์—ˆ์œผ๋ฉฐ /etc/bitwarden ๋””๋ ‰ํ† ๋ฆฌ์˜ ๋ชจ๋“  ํŒŒ์ผ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(/attachments์— ๋Œ€ํ•œ ์š”์ฒญ์€ /etc/bitwarden/attachments/์—์„œ ๋ฐœํ–‰๋จ). ์•”ํ˜ธ "vault.db", ์ธ์ฆ์„œ ๋ฐ ๋กœ๊ทธ์™€ ํ•จ๊ป˜ ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ "/attachments../vault.db", "/attachments../identity.pfx", "/attachments ์š”์ฒญ์„ ๋ณด๋‚ด๊ธฐ์— ์ถฉ๋ถ„ํ–ˆ์Šต๋‹ˆ๋‹ค. ../logs/api.log" ๋“ฑ .P.

์ž˜๋ชป๋œ ๋ณ„์นญ ๋ธ”๋ก ์„ค์ •์ด ์žˆ๋Š” Nginx ๊ตฌ์„ฑ ์ทจ์•ฝ์„ฑ
์ž˜๋ชป๋œ ๋ณ„์นญ ๋ธ”๋ก ์„ค์ •์ด ์žˆ๋Š” Nginx ๊ตฌ์„ฑ ์ทจ์•ฝ์„ฑ

์ด ๋ฐฉ๋ฒ•์€ ๋˜ํ•œ /static ์š”์ฒญ์ด "../hpc-toolkit/community/front-end/website/static/" ๋””๋ ‰ํ† ๋ฆฌ๋กœ ๋ฆฌ๋””๋ ‰์…˜๋˜๋Š” Google HPC ํˆดํ‚ท๊ณผ ํ•จ๊ป˜ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ธ ํ‚ค์™€ ์ž๊ฒฉ ์ฆ๋ช…์ด ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ๊ณต๊ฒฉ์ž๋Š” "/static../.secret_key" ๋ฐ "/static../db.sqlite3" ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ž˜๋ชป๋œ ๋ณ„์นญ ๋ธ”๋ก ์„ค์ •์ด ์žˆ๋Š” Nginx ๊ตฌ์„ฑ ์ทจ์•ฝ์„ฑ


์ถœ์ฒ˜ : opennet.ru

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