[ 개념 ]
PATH : 경로없이 명령어나 프로그램을실행했을 때, 실행파일을검색하는 경로
[ 위협 ]
PATH 환경변수에 의도하지 않은현재 디렉터리에 있는 관리자 명령어가 실행할 수 있다.
관리자 명령어들이 있는 디렉터리보다 우선하여 PATH 환경변수에 있으면
현재 디렉터리에 변조된 관리자 명령어를 악의적으로 삽입하여 명령어 입력 시 변조된 명령어가 실행될 수 있다.
- 현재 디렉터리 지칭이 맨 앞 또는 중간에 있으면 root가 의도하지 않은 명령이 실행될 수 있다
[ 공격방법 ]
.bash_profile 환경설정파일에 PATH 환경변수에 . 경로를 맨앞에 추가한다
vi /root/.bash_profile
-------------------------------
#아래 두줄 추가
PATH=.:$PATH #PATH 명령어들 앞에 현재 경로가 선행
export PATH
-------------------------------
. .bash_profile #변경한 명령어 돌리기
echo $PATH
#맨앞에 .이 붙어있는 결과값이 나온다
---------------------------------
변조된 명령어(ps 명령어) 실행 테스트
which ps
ㄴ/bin/ps
ps
ㄴ변조된 ps명령어가 실행됨
[ 보안 설정 ]
경로 맨 앞 또는 중간에 .이 포함되어 있으면맨 뒤로 이동시키거나 불필요한 경우 삭제
수정 전 : PATH=.:$PATH:$HOME/bin
수정 후 : PATH=$PATH:$HOME/bin:. 또는 PATH=$PATH:$HOME/bin
*참고* SHELL에 따라 참조되는 환경설정 파일
/bin/sh |
/etc/profile, $HOME/.profile |
/bin/bash |
/etc/profile, $HOME/.bash_profile |
/bin/ksh |
/etc/profile, $HOME/.profile, $HOME/kshrc |
/bin/csh |
/etc/.login, $HOME/.cshrc, $HOME/.login |
실무에서 현재디렉토리에서 명령어를 실행하기 위해 현재디렉토리를 .bash_profile 환경설정파일에 추가하곤 한다.
하지만 보안상 유의하는게 좋다