Path Traversal [2]
DATE : 2023/10/29
์์ Path Traversal [1]์์ ์ดํด๋ณธ ๋ด์ฉ์ Path traversal์ด ๋ฌด์์ธ์ง,
์๋ฌด๋ฐ ์กฐ์น๋ ์ทจํ์ง ์์ ๊ฒฝ์ฐ traversal sequence๊ฐ ์ด๋ค ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ์ง์ ๋ํด
๊ฐ๋จํ๊ฒ ์ดํด๋ณด์๋ค.
์ด๋ฒ์ ์ดํด๋ณผ ๋ด์ฉ์ traversal sequence๋ฅผ ์ฐจ๋จํ๊ธฐ ์ํ ์ด๋ค ๊ณผ์ ์ด ์ถ๊ฐ๋์์ง๋ง
์ด๋ฅผ ์ฐํํ์ฌ ์ํ๋ ๊ฒฐ๊ณผ(/etc/passwd)๋ฅผ ์ป์ ์ ์์์ ํ์ธํด๋ณด๊ณ ์ ํ๋ค.
[ LAB 1 ]
์ฒซ ๋ฒ์งธ๋ก ์ดํด๋ณผ Lab์ traversal sequence๋ฅผ strip ํด๋ฒ๋ฆฐ๋ค๊ณ ํ๋ค.
์ฌ๊ธฐ์ strip์ ์์ ๊ณ ์ ํ๋ ๊ฐ์ ๋ฐ๊ฒฌํ์ ๋ ์ ๊ฑฐํ๋ค๋ ์๋ฏธ๋ก ๋ณด๋ฉด ๋๋ค.
๋ง์์ ๋๋ ์ํ ํ๋๋ฅผ ๊ณจ๋ผ์ ํด๋ฆญํ๋ฉด ์ด 2๊ฐ์ packet์ด ์ง๋๊ฐ๋ ๊ฑธ ๋ณผ ์ ์๋๋ฐ
์ฒซ ๋ฒ์งธ packet์ productID parameter๋ฅผ ๋ณด๋ด๋ Get request์ด๊ณ
๋ ๋ฒ์งธ packet์ filename parameter๋ก ์ฌ์ฉํ ์ด๋ฏธ์ง ํ์ผ๋ช ์ ๋ณด๋ธ๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ๋ ๋ฒ์งธ packet์ ํ์ฉํ ๊ฒ์ด๋ค.
์ด์ LAB์์ ํ๋ ๊ฒ์ฒ๋ผ
parameter ๊ฐ์ ๋ฃ์ด๋ณด๋ฉด
์๋ง ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์ ๊ฒ์ด๋ค.
์ด๋ฒ LAB์์๋ ๊ณต๊ฒฉ์๊ฐ sequence๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋๋ก " ../ "๋ฅผ ์ ๊ฑฐํ๋ค๊ณ ํ๋ค.
๊ทธ๋ ๋ค๋ฉด ์ด๋ฅผ ์ด๋ป๊ฒ ์ฐํํด /etc/passwd์ ์ ๊ทผํ ์ ์์๊น??
๋จ์ํ๊ฒ ์๊ฐํด๋ดค์ ๋, ์ฐ๋ฆฌ๋ " ../ " ๋ฅผ ์ด์ฉํด์ผ ํ๊ณ ์๋ฒ์์๋ " ../ "๋ฅผ ์ ๊ฑฐํ๋ค.
๊ทธ๋ฌ๋ฉด ์๋ฒ๊ฐ " ../ " sequence๋ฅผ ์ ๊ฑฐํ์ ๋์ ๊ฒฐ๊ณผ๊ฐ " ../ " sequence๊ฐ ๋๋๋ก ํ๋ฉด ๋์ง ์์๊น?
traversal sequence๋ฅผ ๋ ๋ค๋ฅธ sequence๊ฐ ๊ฐ์ธ๋ ํํ๋ก ์ ๋ ฅํ๊ฒ ๋๋ฉด
์๋ฒ์์๋ ๊ฐ์ธ์ ธ ์๋ ๋ด๋ถ sequence๋ง ์ ๊ฑฐํ๊ฒ ๋๊ณ
๋ด๋ถ sequence๊ฐ ์ ๊ฑฐ๋๋ฉด์ ์ธ๋ถ์ ์์ฑ๋ ๊ฐ์ด ์๋ก ์ด์ด ๋ถ์ฌ์ง๋ฉด
์๋ก์ด sequence๊ฐ ๋ง๋ค์ด์ง๊ฒ ๋๋ ๊ฒ!!
์ด๋ฅผ ์ด์ฉํด /etc/passwd์ ์ ๊ทผ์ ์๋ํด๋ณด๋ฉด
์ฑ๊ณต์ ์ผ๋ก ํ์ผ ๋ด์ฉ์ ์ป์ ์ ์๋ค.
[ LAB2 ]
์ด๋ฒ์๋ ๋ ๋ค๋ฅธ LAB์ ์ดํด๋ณด๊ณ ์ ํ๋ค.
์์์๋ sequence ../ ๋ฅผ ์ ๊ฑฐํ๋ค๋ฉด ์ด๋ฒ์ URL decoding์ ์คํํ๋ค๊ณ ํ๋ค.
๋๊ฐ์ด packet์ ์ก์
๋ฅผ ์ ๋ ฅํด๋ณด๋ฉด "No such file" ์๋ต์ด ๋์์จ๋ค.
๊ทธ๋ ๋ค๋ฉด ๋ฌธ์ ์ ๊ท๋ํด ์ค ๋๋ก URL decoding ๊ณผ์ ์์ ์ด์๋จ๊ธฐ ์ํด URL encoding์ ํด๋ณด์.
์์ ๊ฐ์ด sequence ๋์ URL encoding ํ ๊ฐ์ ๋ฃ์ด์ฃผ๋ฉด
๊ฒฐ๊ณผ ์ ๋์จ๋ค. (?)
ํ ํน์ ๋ชจ๋ฅด๋ encoding์ ํ ๋ฒ ๋ ํด๋ณด์.
URL encode๋ฅผ ๋ ๋ฒ ์คํํ ๊ฐ์ ๋ฃ์ผ๋ฉด ์ฑ๊ณต์ ์ผ๋ก /etc/passwd ๋ฅผ ์ป์ ์ ์๋ค!!
(+) encode & decode ๊ฐ ์์ฝ๊ฒ ํ์ธํ๊ธฐ
์ ๋ ฅ ํ๋ผ๋ฏธํฐ ๊ฐ์ ์ญ- ๋๋๊ทธ ํด๋ณด๋ฉด
sequence ../ ๋ฅผ ํ ๋ฒ encoding ํ ๊ฐ, ๋ ๋ฒ encoding ํ ๊ฐ์ ๋ํด
decode ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฝ๊ฒ ํ์ธํ ์ ์๋ค.
์ด๋ ๊ฒ ํด์ path traversal sequence๋ฅผ ์ฐจ๋จํ๊ธฐ ์ํด
(1) sequence stripํ๊ธฐ
(2) URL decoding ๊ณผ์ ์ ๊ฑฐ์ณ ํ๋ผ๋ฏธํฐ ๊ฐ ์ฌ์ฉํ๊ธฐ
์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์๋ค.
์ด์ ๋ํด ์ฐ๋ฆฌ๋
(1) ์ธ๋ถ์์ sequence๋ฅผ ๊ฐ์ธ๋ sequence ์ฌ์ฉํ๊ธฐ
(2) URL encoding ๊ณผ์ ์ ๊ฑฐ์ณ parameter ์กฐ์ํ๊ธฐ
๋ฅผ ํตํด LAB์ ํ ์ ์์๋ค.
์ด ๊ณผ์ ์ ํตํด์ sequence๋ฅผ ์ฐจ๋จํ๊ธฐ ์ํ ๊ณผ์ ์ด ์ถฉ๋ถํ์ง ๋ชปํ๋ค๋ฉด
์์ฝ๊ฒ ์ฐํ ๋ ์ ์์์ ์ธ์งํ๊ณ ๋์ด๊ฐ์ผ ํ๋ค!!
Last updated