[Linux] ํ๊ฒฝ๋ณ์์ ํ๊ฒฝ๋ณ์ PATH๋? (+๋ช ๋ น์ด๋ฅผ ์ฐพ๋ ๊ฒฝ๋ก์ ์ ์ฐจ, PATH ๊ณต๊ฒฉ)
์ผ๋จ ํ๊ฒฝ๋ณ์๊ฐ ๋ฌด์์ธ์ง์ ๋คํด์ ๊ฐ๋จํ๋ง ์ง๊ณ ๋์ด๊ฐ์.
๋ถ๋ช
ํ๊ฒฝ๋ณ์๋ผ๋ ๋จ์ด, ํ๊ฒฝ ๋ณ์ ์ค์ ์ด๋ผ๋ ๊ฑด ๋ณดํต ๊ฐ๋ฐํ๊ฒฝ์ ๊ตฌ์ถํ ๋ ๋ง์ด ๋ค์ด๋ณด๊ธด ํ์ ๊ฒ ๊ฐ์๋ฐ ๊ทธ๊ฒ ๋ญ์ง์ ๋ํด์ ์๋ ค์ฃผ๋ ๊ณณ์ ๋ณ๋ก ์์๋ค. ๊ทธ๋์ ์ด๋ฒ ๊ธฐํ์ ๊ณต๋ถํ๋ ๊น์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.
ํ๊ฒฝ๋ณ์๋?
ํ๋ก์ธ์ค๊ฐ ์ปดํจํฐ์์ ๋์ํ๋ ๋ฐฉ์์ ์ํฅ์ ๋ฏธ์น๋ ๋ณ์๋ค์ ๋ชจ์์ด๋ค.
์ฆ ์ปดํจํฐ ํ๊ฒฝ ์ค์ ํ ๋ ๊ฐ์ผ๋ก ์ค์ ๋์ด์๋ ์ ๋ค์ด๋ผ๊ณ ์๊ฐํ๋ฉด ํธํ๋ค.
๋ฆฌ๋
์ค๋ ์๋์ฐ๋ ํ๊ฒฝ๋ณ์๋ ๋ค ์๋ค.
์) $PARH, $HOME, $PWD, $TZ ๋ฑ
์ฐธ๊ณ ๋ก ํ๊ฒฝ๋ณ์๋ ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์์๋ก ๋ณ๊ฒฝํ ์ ์๋ค. (๋ฃจํธ๋ ๊ฐ๋ฅํ๋ฏ)
ํํธ ๋ฆฌ๋ ์ค์์ export ๋ช ๋ น์ด๋ฅผ ์น๋ฉด ํ๊ฒฝ ๋ณ์ ์ ๋ณด๋ค์ ์ถ๋ ฅํ ์ ์๋ค.
์ฐ๋ฆฌ๊ฐ ๋ช ๋ น์ด๋ฅผ ์น ๋๋ ํฐ๋ฏธ๋์์๋ ํ๊ฒฝ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ค(์๋ ์์ธํ). ๋ํ ํ๋ก๊ทธ๋จ์์๋ ํ๊ฒฝ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ค. ํ๋ก๊ทธ๋จ์ด ๋ก๋๋ ๋ ํ๊ฒฝ๋ณ์๋ ๊ฐ์ด ์ด๊ธฐํํ๋ ๊ณผ์ ์ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ด๋ค. (ํ๋ก์ธ์ค์์๋ ์คํ์ ํ๊ฒฝ๋ณ์ ์ ๋ณด๋ค์ ์ ์ฅํด ๋๊ณ , ์ด ํ ์ด๋ธ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ __environ ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.)
์์ธํ ๋ด์ฉ์ ์๊ธฐ -> [๋๋ฆผํต(Dreamhack)] __environ ,
์ฌํ๋ฌธ์ ๋ ์ฌ๊ธฐ [๋๋ฆผํต(Dreamhack)] environ (๋์ด ๋ค๋ฅธ ๋ฌธ์ ๋ค. ๋ฐ์๊ฑฐ๊ฐ ๋ ์ด๋ ค์)
$PATH
์ด์ PATH ํ๊ฒฝ ๋ณ์($PATH)์ ๋ํด ์์๋ณด๋๋ก ํ์. ์ฝ๊ฒ ๋งํด์ ์ฐ๋ฆฌ๊ฐ ์ด๋ค ๋ช
๋ น์ด๋ฅผ ์คํํ๋ค๊ณ ํ๋ ์ํฉ์ ๊ฐ์ ํด๋ณด์.
๊ทธ๋ฐ๋ฐ ์ ๋ง ์ ๊ธฐํ ๊ฒ์ด ๋ช
๋ น์ด๊ฐ ์ฌ์ค์ '์คํ'ํ์ผ์ด๋ผ๋ ๊ฒ์ด๋ค.
์๋ฅผ๋ค์ด ๋ฆฌ๋
์ค์์ mkdir ๋ช
๋ น์ ์คํํ๋ค๊ณ ์๊ฐํด๋ณด์ ๊ทธ๋ฐ๋ฐ ์ฌ์ค mkdir๋ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋๋ ํ๋์ '์คํ'ํ๋ ๊ฒ์ด๋ค. ๊ฒฐ๊ตญ mkdir์ ์
๋ ฅํ๋ฉด ํ๋์ ์คํํ์ผ์ด ์คํ๋๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
๊ทธ๋ผ $PATH๋ ๋ฌด์์ธ๊ฐ?
์ด ์คํ ํ์ผ์ ์์น๊ฐ !!! ์ด๋์ง ์๋ ค์ฃผ๋ ๊ฑฐ๋ค ์๋ฅผ๋ค์ด mkdir๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ์ด๋ ๊ฒฝ๋ก์ ์ด๋ ํ์ผ๋ก ๊ฐ์ผํด? ์ด๊ฑธ ์๋ ค์ฃผ๋ ๊ฒ์ด๋ค~! ์ฌ์ฉ์๊ฐ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ์ปดํจํฐ๋ PATH์ ์ ํ ์์น๋ค๋ก ํ๋์ฉ ๊ฐ๋ณด๋ฉฐ ๋ช
๋ น์ด ํ์ผ์ ์ฐพ์ ํ ์คํํ๊ฒ๋๋ค.
echo $PATH๋ฅผ ํตํด์ PATH ํ๊ฒฝ ๋ณ์์ ๋ด์ฉ์ ์ถ๋ ฅํด๋ณด์๋ค.
':'(์ฝ๋ก )์ผ๋ก ๊ตฌ๋ถ๋ ๊ฒ๋ค์ด ๋ค ๊ฒฝ๋ก๋ค์ด๊ณ , ๋ช ๋ น์ด๋ฅผ ์คํํ ๋ ์ด ๊ฒฝ๋ก๋ค์ ๋ค์ด๊ฐ์ ๋ช ๋ น์ด๊ฐ ์๋์ง๋ฅผ ํ์ํ๋ค.
์์์ ~๋๋ ํ ๋ฆฌ์ id๋ผ๋ ์คํํ์ผ์ด ์กด์ฌํ์ง๋ ์์์๋ id ๋ช ๋ น์ด๋ฅผ ์คํํ ์ ์์๋ ๊ฒ์ ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ํ์ํ ํ id ํ์ผ์ด ์์ด์ ํ๊ฒฝ ๋ณ์์ ๊ฒฝ๋ก๋ค์ ๋ค ํ์ํด๋ดค๊ธฐ ๋๋ฌธ์ด๋ค.
๋ช ๋ น์ด ์คํ ํ๋ฆ
์ฌ์ฉ์๊ฐ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ ๋ ์ปดํจํฐ๊ฐ ์ด๋ฅผ ์ด๋ป๊ฒ ์คํํ๋์ง ํ๋ฆ๋๋ฅผ ์๋์ ๊ฐ์ ธ์๋ดค๋ค.
๋จผ์ ํด๋น ๋ช ๋ น์ด ํ์ผ์ด ํ์ฌ ๋๋ ํ ๋ฆฌ ์์ ์๋์ง ์ฐพ๋๋ค.
๋ง์ฝ ์์ผ๋ฉด $PATH์ ์๋ ๊ฒฝ๋ก๋ค์ ๊ฐ๋ณธ๋ค.
๊ทธ ๋ช ๋ น์ด ์คํ๊ถํ์ด ์์ผ๋ฉด ์ด๋ฅผ ์คํํ๋ค.
๋ง์ฝ ์คํ๊ถํ์ด ์์ผ๋ฉด ํด๋น ๋ช ๋ น์ด ํ์ผ์ด setuid ํน์ setgid๊ฐ ์ค์ ๋์ด์๋์ง ํ์ธํ๋ค. setuid๊ฐ ์ค์ ๋์ด์๊ณ ์คํ๊ถํ์ด ์์ผ๋ฉด ์ด๋ฅผ ์คํํ๊ฒ ๋๋ค. (setuid์ setgid๋ ๋ฆฌ๋ ์ค ๊ถํ ์ค ํน์๊ถํ์ผ๋ก ๋ฐ๋ก ํฌ์คํ ํ ์์ ์ด๋ค.)
์ฐธ๊ณ ๋ก ์คํํ์ผ์ ๋ช ๋ น์ด์ธ์ง์๋์ง ์๊ด์์ด ์ ๋ ๊ฒฝ๋ก๋ก ์คํํด์ฃผ๋ฉด ๋ค ์คํ์ด๋๋๊ฒ์ ์์ง๋ง์
path๋ฅผ ์ด๊ธฐํ ํด์ฃผ๋๋ผ๋ ๋ง์ฝ ์ ๋๊ฒฝ๋ก๋ก ์ ๋ ฅํด์ฃผ๋ฉด ๊ทธ๋ฅ cmd์ ์ ๋๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํ๋ ๊ฒ๊ณผ ๋์ผํ๋ฏ๋ก ํด๋น ์คํํ์ผ(๋ช ๋ น์ด ํ์ผ ํฌํจ)์ด ์คํ๋๋ค
$PATH ์กฐ์?
๊ทธ๋ผ ๋ง์ฝ์ $PATH๋ฅผ ์กฐ์ํ๋ค๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
์๋ ๊ทธ๋ฆผ์์๋ PATH ๊ฐ ์์ฒด๋ฅผ ์์ ์ง์๋ฒ๋ ธ๋ค. ๋ฐ๋ผ์ id ๋ช ๋ น์ด๊ฐ ์์ ์คํ์ด ์ ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด๋ฌ๊ณ shell ๋ฐ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค์ด ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ฃ์ด๋ดค๋ค.
PATH๋ฅผ ์ ๊ฑฐํด์ฃผ์๋๋ id๋ฅผ ์น๋ ์์ด ๋ฐ์ง๋ ๊ฑธ ํ์ธํ ์ ์์๋ค (๋ฌผ๋ก PATH๋ฅผ ์ด๊ธฐํํด์ ls ๋ช ๋ น์ด๋ ๋จนํ์ง ์๋ ๋ชจ์ต๋ค)
๋ ๋ค๋ฅธ ์์๋ฅผ ๋ณด์
// gcc -o environ1 environ1.c
#include <stdlib.h>
#include <unistd.h>
int main()
{
printf("Screen Cleaner\n");
system("clear");
return 0;
}
์ ์ฝ๋๋ clear ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ์ฝ๋์ด๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ฝ PATH๋ณ์๊ฐ ๋น์์ ธ์๋ค๋ฉด ์ ์ฝ๋๋ฅผ ์คํํ ๋ ์ค๋ฅ๊ฐ ๋ฐ๊ฒ์ด๋ค. ์๋ํ๋ฉด clear๋ผ๋ ์คํํ์ผ์ ์ฐพ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
ํํธ ๋ฆฌ๋ ์ค์์ ๋ช ๋ น์ด๋ฅผ ์คํํ ๋ ์ด๋ป๊ฒ ํ๋ค๊ณ ํ๋์ง ๊ธฐ์ตํ๋๊ฐ? ์ผ๋จ ํด๋น ๋๋ ํ ๋ฆฌ์์๋ clear๋ผ๋ ์ด๋ฆ์ ์คํํ์ผ์ด ์๋์ง๋ฅผ ์ฐพ๋ ๊ฒ์ด๋ค !!!! ๊ทธ๋ ๋ค๋ฉด ๋๋ ํ ๋ฆฌ์ clear๋ผ๋ ํ์ผ์ ๋ง๋ค์ด์ฃผ๊ณ ๊ฑฐ๊ธฐ๋ค ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฑธ ํ๊ฒ ์ํค๋ฉด ๋์ง ์์๊น?
์๋์ฒ๋ผ ./clear๋ผ๋ ์ด๋ฆ์ผ๋ก /bin/sh์ ์ฌ๋ณผ๋ฆญ ๋งํฌ๋ฅผ ๊ฑธ์ด์ฃผ์๋ค. ๊ทธ๋ฆฌ๊ณ PATH๋ฅผ ์ด๊ธฐํํ๋ค.
์ด๋ ๊ฒ ํ๋ฉด clear ๋ช ๋ น์ด๋ฅผ ์คํํ ๋ /bin/sh๊ฐ ์คํ๋๊ฒ ๋ ๊ฒ์ด๋ค. ์ ๊ทธ๋ฆผ์ ํตํด์ ์ ์์ ์ผ๋ก ์์ด ๋ฐ์ง ๊ฒ์ ๋ณผ ์ ์๋ค!!
์ฝ๋์์๋ system("clear"); ํ์์ผ๋ก ๋ช ๋ น์ด๋ฅผ ์คํํ์๋ค. ํ์ง๋ง ์ด๋ฌํ ์ฝ๋๋ค์ ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๊ฐ์ ์ด๋ฆ์ผ๋ก ๋ค๋ฅธ ํ์ผ์ ๋ง๋ค๋ฉด ์ ์์ ์ธ ํ์ผ์ ์ฌ๊ณ ์ด๋ฅผ ์คํ์ํฌ ์ ์๋ค.
๋ฐ๋ผ์ ๋ณด์์ ์ผ๋ก ์์ ํ ์ฝ๋๋ฅผ ๋ง๋ค๊ธฐ ์ํด์ ์๋์ฒ๋ผ ์ ๋๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํด์ฃผ๋ ๊ฒ์ด ๋ ๋ฐ๋์งํ๋ค.
system("/usr/bin/clear");
์ด๋ฌํ ๊ณต๊ฒฉ๋ค์ ํ๊ฒฝ ๋ณ์ PATH๋ฅผ ์ด์ฉํ ๊ณต๊ฒฉ์ผ๋ก ํ๊ฒฝ ๋ณ์ ๊ณต๊ฒฉ (Environment Attack)์ ์ผ๋ถ์ด๋ค. ์ด์ ๋ํ ๋ด์ฉ์ ๋ค๋ฅธ ํฌ์คํธ์์ ์์ธํ๊ฒ ๋ค๋ฃจ๋๋ก ํ๊ฒ ๋ค.