Path Traversal : self-test [1]
DATE : 2023/10/25
Path Traversal [1]์์ ์ดํด๋ณธ Lab๊ณผ ์ ์ฌํ ํ๊ฒฝ์ ์ง์ ๋ง๋ค์ด๋ณด๊ณ
path traversal sequence๊ฐ ๊ณผ์ฐ ์ ํจํ ๊ฒ์ธ์ง..! ์ง์ ํ์ธํด๋ณด์.
Lab๊ณผ ๋น์ทํ๊ฒ ๋ง๋ค์ด๋ณผ ํ๊ฒฝ์ image choice form์ด๋ค.
images directory์ ์ด 4๊ฐ์ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ํ์์
์ฌ์ฉ์๊ฐ ์ด๋ฏธ์ง์ ์ด๋ฆ์ ์ ๋ ฅํ๋ฉด ํด๋น ์ด๋ฏธ์ง๋ฅผ ์ถ๋ ฅํ๋ ๊ฐ๋จํ form์ ๋ง๋ค์ด๋ณผ๊น ํ๋ค.
( ์ฌ์ฉ์๊ฐ ์ด๋ฏธ์ง๋ฅผ ์ ํํ์ง ์์ ์ํ์ผ ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก 1.jpg๋ฅผ ์ถ๋ ฅํ๋๋ก ํ๋ค. )
[ images.php ]
image choice form์ ์ ๊ณตํ ์ฝ๋๋ ์์ ๊ฐ๋ค.
html์์๋ ๊ฐ๋จํ๊ฒ ์ด๋ฏธ์ง ์ด๋ฆ์ ๋ฐ์ <input> & ์ ์ถ ๋ฒํผ ์ญํ ์ <input> tag๋ฅผ ๊ตฌ์ฑํ๊ณ ์๋ค.
PHP์์๋ KEY 'submit'์ด ๊ธ๋ก๋ฒ ๋ณ์ GET์ ์กด์ฌํ๋ ์ง ํ์ธํ๋ค.
(<form> tag์์ method ์์ฑ์ get์ ์ง์ ํ๊ธฐ ๋๋ฌธ์)
์ด๋ KEY 'submit'์ด ์กด์ฌํ๋ค๋ ๊ฑด, ์ฌ์ฉ์๊ฐ CHOICE ๋ฒํผ์ ๋๋ ๋ค๋ ์๋ฏธ์ด๋ค.
๋ฒํผ์ด ๋๋ ธ๋ค๋ฉด ์ฌ์ฉ์๊ฐ ์ ํํ ์ด๋ฏธ์ง ํ์ผ ์ด๋ฆ์ $filename์ ํ ๋นํ๊ณ
๋ฒํผ์ด ๋๋ฆฌ์ง ์์๋ค๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก images directory์ ๋ค์ด์๋ 1.jpg๋ฅผ ์ถ๋ ฅํ๋ค.
(+) <img> tag๋ html์์ image๋ฅผ ์ถ๋ ฅํ๋ ์ฉ๋์ ํ๊ทธ๋ก
src ์์ฑ์ ์ถ๋ ฅํ ์ด๋ฏธ์ง์ ๊ฒฝ๋ก๋ฅผ,
alt ์์ฑ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํด ์ด๋ฏธ์ง๋ฅผ ์ถ๋ ฅํ ์ ์์ ๊ฒฝ์ฐ ๋์ฒดํ ๋ฌธ๊ตฌ๋ฅผ ์๋ฏธํ๋ค.
๋ง์ฝ ์ฌ์ฉ์๊ฐ CHOICE ๋ฒํผ์ ๋๋ ๊ณ ์ ๋ ฅํ ํ์ผ ์ด๋ฆ์ด "2.jpg"๋ผ๋ฉด
์์ ๊ฐ์ ๊ณผ์ ์ผ๋ก <img> tag์ 2.jpg๊ฐ ๋ด๊ธฐ๊ฒ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ๊ฒฐ๊ณผ๋ฅผ ํ ๋ฒ ํ์ธํด๋ณด์!!
[ image choice form result ]
images.php์ ํ๋ฉด์ ์์ ๊ฐ์ด ๊ตฌ์ฑ๋๋ ๊ฑธ ๋ณผ ์ ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ 1.jpg ์ฌ์ง๋ ์ ๋์ค๊ณ ์๊ณ ,
filename์ ์ ๋ ฅํ๋ผ๋ ๋ฌธ๊ตฌ์ ํจ๊ป <input> tag๊ฐ ์ ๊ณต๋๊ณ ์๋ค.
์ด๋ฒ์ ์ด๋ฏธ์ง๊ฐ ์ ๋ณ๊ฒฝ๋๋ ์ง ํ์ธํด๋ณด์.
<input>์ 2.jpg๋ฅผ ์ ๋ ฅํ๊ณ choice ๋ฒํผ์ ๋๋ฅด๋ฉด
์ฑ๊ณต์ ์ผ๋ก ์ด๋ฏธ์ง๊ฐ ๋ฐ๋ ๊ฑธ ๋ณผ ์ ์๋ค!!
images directory๋ก ๊ฐ์ ํ์ธํด๋ณด๋ฉด ์ด ์ด๋ฏธ์ง๊ฐ
์ฌ์ฉ์๊ฐ ๊ณ ๋ฅธ 2.jpg์ ๋์ผํ ์ฌ์ง์์ ์ ์ ์๋ค.
์ด์ ๋ ์ด๋ฒ POST์ ๋ชฉ์ ๋๋ก path traversal sequence๋ฅผ ์ฌ์ฉํด secret.txt ๋ด์ฉ์ ์ฝ์ด๋ณผ ๊ฒ์ด๋ค.
๊ทธ ์ ์ ๋ฏธ๋ฆฌ hanhxx directory์ secret.txt๋ฅผ ๋ง๋ค์ด๋์.
secret.txt ๋ด์ฉ์ ์์ ๊ฐ๋ค.
๋ค์ form์ผ๋ก ๋์์์! secret.txt ๋ด์ฉ์ ์ฝ๊ธฐ ์ํ ๊ฒฝ๋ก๋ฅผ ์๊ฐํด๋ณด๋ฉด
์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒฝ๋ก๋ code์์ ๋ณธ ๋ฐ์ ๊ฐ์ด images directory์ด๋ค.
secret.txt๊ฐ ๋ค์ด์๋ hanhxx directory๋ก ์ ๊ทผํ๊ธฐ ์ํด์ images directory์์ ํ ๋ฒ
์์ ๊ณ์ธต directory๋ก ๋น ์ ธ๋์์ผ ํ๋ค.
ํ์ฌ directory์์ ํ ๋ฒ ๋น ์ ธ๋์จ ๋ค, hanhxx directory๋ก ๋ค์ด๊ฐ secret.txt๋ฅผ ์ฝ๋๋ก ๊ฐ์ ๋ฃ์ผ๋ฉด
ํ๋ฉด์๋ ์ ๋ ฅํ ๊ฒฝ๋ก์ ํด๋นํ๋ ์ด๋ฏธ์ง๊ฐ ์๊ธฐ ๋๋ฌธ์ alt ๊ฐ์ด ์ถ๋ ฅ ๋์ง๋ง
response ๋ด์ฉ์ ํ์ธํด๋ณด๋ฉด
์ฑ๊ณต์ ์ผ๋ก secret.txt ๋ด์ฉ์ ํ์ธํ ์ ์๋ค.
์ด์ฒ๋ผ path traversal sequence๋ฅผ ์ฐจ๋จํ์ง ๋ชปํ๋ฉด
๊ณต๊ฒฉ์๊ฐ ์ํ๋ ๋๋ก directory๋ฅผ ์ฎ๊ฒจ ๋ค๋ ์ ์๊ฒ ๋๊ณ ์ด๋ ๊ฒฐ๊ตญ
์ค์ํ ์ ๋ณด๊ฐ ์ ์ถ ๋นํ๋ ์ฌํ๋ก ์ด์ด์ง ์ ์๋ค!!
[ summary ]
์ด๋ฒ POST์์๋ ์ง์ ๊ฐ๋จํ form์ ๊ตฌ์ฑํ๊ณ path traversal sequence๋ก ์ ์ฉ๋ ์ ์๋
์ฌ๋ก์ ๋ํด์ ์ดํด๋ณด์๋ค.
php code์ sequence๋ฅผ ์ฐจ๋จํ๋ ๊ทธ ์ด๋ค ๋ด์ฉ์ด ์์ฑ๋์ด์์ง ์์ ๋ฟ๋๋ฌ
์ฌ์ฉ์๊ฐ ์ ๋ ฅํ ๊ฐ์ ๊ทธ๋๋ก img tag์ ๋ฐ์ํ๋ ๋ถ๋ถ์ด ์ฃผ ์์ธ์ผ๋ก ๋ณด์ธ๋ค.
๊ทธ๋ ๋ค๋ฉด path traversal sequence๋ฅผ ์ฐจ๋จํ๊ธฐ ์ํด์ ์ฝ๋๋ฅผ ์ด๋ป๊ฒ ๊ฐ์ ํ ์ ์์ ์ง ์์๋ณด๋๋ก ํ์!
Last updated