. <---------- 저 점 하나가 리눅스에서는 큰 변화를 가져올 수 있다. :/
PATH 환경변수란?
프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 모임.
Default: /etc/profile 파일에 저장됨.
각 사용자에게는 일반적으로 사용자의 $HOME/.profile 파일에 PATH 값을 가지고 있음.
.profile 파일의 PATH값은 시스템 전체 PATH값을 재정의하거나 기타 디렉토리를 이 값에 추가한다.
PATH환경변수 변조를 이용해서 발생할 수 있는 시나리오 참고 IBM 사이트 글
root 계정의 PATH 환경변수에 . 이 포함되어 있으면,
root 계정의 인가자로 인해 비의도적으로 현재 디렉토리에 위치하고 있는 명령어가 실행될 수 있다.
. 이 녀석이 /usr/bin 이나 /bin, /sbin 등 명령어들이 위치하고 있는 디렉토리보다 윗단에 위치하고 있으면, root 계정의 인가자가 특정 명령을 실행했을 때 비인가자가 불법적으로 위치시킨 파일을 실행하여 예기치 않은 결과를 가져올 수 있음.
잘못된 PATH의 우선순위 등이 침해사고에 이용될 수 있으므로, . 뿐만 아니라 비인가자가 불법적으로 생성한 디렉토리를 우선으로 가리키지 않도록 설정해야 한다.
양호: PATH 환경변수에 . 이 맨 앞이나 중간에 포함되지 않은 경우
취약: PATH 환경변수에 . 이 맨 앞이나 중간에 포함되어 있는 경우
조치방법:
root 계정의 환경변수 설정파일(/.profile, /.cshrc 등)과
/etc/profile (등)에서 PATH 환경변수에 포함되어 있는 현재 디렉토리를 나타내는 . 을
'환경변수의 마지막' 으로 이동.
/etc/profile 과 root 계정의 환경변수 파일,
일반계정의 환경변수 파일을 순차적으로 검색하여 확인한다.
OS별 점검 파일 위치 및 점검 방법 |
|
SunOS, LINUX, AIX, HP-UX |
#echo $PATH /usr/local/sbin:/sbin:/usr/sbin:/bin:/usr/bin:/usr/bin/X11:/usr/local/bin:/usr/bi n:/usr/X11R6/bin:/root/bin 위와 같이 출력되는 PATH 변수 내에 “.” 또는, “::” 포함 여부 확인 |
PATH 변수 내에 “.”, “::” 이 맨 앞에 존재하는 경우 아래의 보안설정방법에 따라 설정을 변경함
SHELL에 따라 참조되는 환경 설정파일 |
|
/bin/sh |
/etc/profile, $HOME/.profile |
/bin/csh |
$HOME/.cshrc, $HOME/.login, /etc/.login |
/bin/ksh |
/etc/profile, $HOME/.profile, $HOME/kshrc |
/bin/bash |
/etc/profile, $HOME/.bash_profile |
※ 홈 디렉터리에 설정된 값이 가장 늦게 적용되어 최종 PATH로 설정됨 |
FN_HEAD "[U-16]" " root 홈, 패스 디렉터리 권한 및 패스 설정"
RTN="MANUAL"
echo "[*] root PATH Check"
echo $PATH
FN_TAIL $RTN
Q) 저 $PATH가 대체 어디서 오는거지?
(알껍데기 시절 필기)
../../../
var/www/html/ 웹루트디렉토리 <- 웹해킹할 때는 저 /html/index.html 이 부분을 진단하게 된다. Hello ~ apache 이런게 뜰거다.
/etc/passwd를 확인하고 싶다.
../../../ <- /root/ 로 가게 된다.
Usr/local/bin 에 명령어들이 위치해 있다. < - 이런 명령어들을 미리 지정해줘서 우리가 명령어 쓸 때마다
저런거 다 일일히 타이핑해가면서 명령어 쓰지 않아도 되게 해주는 것이 환경변수.
심볼릭링크가 걸려있다. <- user/bin 으로 들어가도 바로 usr/local/bin 으로 바로 접속이 되는 이유.
/usr/local/sbin ./~/tmp/악성코드 < -- 환경변수 조작. -------- 어떻게 조작할 수 있을까/ 찾아보자.
불필요한 환경변수 찾는게 맞다. <- 거기를 보통 조작할거기 때문.
Comments
Post a Comment