U-05 root홈, 패스 디렉터리 권한 및 패스 설정
항목중요도 : 상
1. 취약점 개요
▶ 점검내용 : root 계정의 PATH 환경변수에 “.”이(마침표) 포함되어 있는지 점검
▶ 점검목적 : 비인가자가 불법적으로 생성한 디렉터리 및 명령어를 우선으로 실행되지 않도록 설정하기 위해 환경변수 점검이 필요함
▶ 보안위협
· root 계정의 PATH(환경변수)에 정상적인 관리자 명령어(예: ls, mv, cp등)의 디렉터리 경로 보다 현재 디렉터리를 지칭하는 “.” 표시가 우선하면 현재 디렉터리에 변조된 명령어를 삽입하여 관리자 명령어 입력 시 악의적인 기능이 실행 될 수 있음
▶ 참고
※ 환경변수: 프로세스가 컴퓨터에서 동작하는 방식에 영향을 미치는 동적인 값들의 집합으로 Path 환경변수는 실행파일을 찾는 경로에 대한 변수임
2. 점검대상 및 판단 기준
▶ 대상 : SOLARIS, LINUX, AIX, HP-UX 등
▶ 판단기준
· 양호 : PATH 환경변수에 “.” 이 맨 앞이나 중간에 포함되지 않은 경우
· 취약 : PATH 환경변수에 “.” 이 맨 앞이나 중간에 포함되어 있는 경우
▶ 조치방법 : root 계정의 환경변수 설정파일(“/.profile”, “/.cshrc” 등)과 “/etc/profile” 등에서 PATH 환경변수에 포함되어 있는 현재 디렉터리를 나타내는 “.”을 PATH 환경변수의 마지막으로 이동
※ “/etc/profile”, root 계정의 환경변수 파일, 일반계정의 환경변수 파일을 순차적으로 검색하여 확인
3. LINUX 초기 설정값
※ 테스트한 LINUX의 버전은 AWS로 구성된 CentOS 9 입니다.
확인방법
$ echo $PATH
출력되는 PATH 변수 내에 “.” 또는, “::” 포함 여부 확인합니다. 존재할 경우 취약입니다.
[ec2-user@localhost ~]$ echo $PATH
/home/ec2-user/.local/bin:/home/ec2-user/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
쉘이 명령어를 입력할 때, 이 경로들을 순서대로 검색하여 해당 명령어가 존재하는지 확인합니다. 첫 번째로 찾은 경로에서 실행 가능한 파일을 발견하면 그 파일을 실행합니다.
1순위 /home/ec2-user/.local/bin
2순위 /home/ec2-user/bin
3순위 /usr/local/bin
4순위 /usr/bin
5순위 /usr/local/sbin
6순위 /usr/sbin
1순위 /home/ec2-user/.local/bin 에도 /.이 존재하는데 이부분은 취약이 아닙니다.
/.은 현재 디렉터리를 나타내는 것입니다.
취약의 경우는
:.:
.:
입니다.
4. 조치
조치가 필요할 경우 직접 경로에 들어가서 수정해줘야합니다.
[ec2-user@localhost ~]$ cat .bashrc
# .bashrc
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# User specific environment
if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
then
PATH="$HOME/.local/bin:$HOME/bin:$PATH"
fi
export PATH
# Uncomment the following line if you don't like systemctl's auto-paging feature:
# export SYSTEMD_PAGER=
# User specific aliases and functions
if [ -d ~/.bashrc.d ]; then
for rc in ~/.bashrc.d/*; do
if [ -f "$rc" ]; then
. "$rc"
fi
done
fi
unset rc
PS1='[\u@localhost \W]\$ '
# User specific environment 하단을 아래와 같이 변경합니다.
차이를 보이기 위해 /.local -> /local 로 수정하여 반영할 겁니다.
# User specific environment
# 기존에 기재되어있던 부분은 주석처리했습니다.
#if ! [[ "$PATH" =~ "$HOME/.local/bin:$HOME/bin:" ]]
#then
# PATH="$HOME/.local/bin:$HOME/bin:$PATH"
#fi
PATH="$HOME/local/bin:$HOME/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin"
export PATH
수정 저장 후 아래 명령어로 변경사항을 적용합니다.
# 변경사항 적용 명령어
$ source ~/.bashrc
5. 결과
경로가 이렇게 뜹니다.
변경 완료입니다!
[ec2-user@localhost ~]$ echo $PATH
/home/ec2-user/local/bin:/home/ec2-user/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
※ PATH경로는 계정별로 수정해야합니다.
다른 계정의 경우 반영되지 않음을 확인 할 수 있습니다! 꼭 계정별로 점검하셔서 취약한지 확인하셔야 합니다!
[it-mskim@ip-172-31-8-135 ~]$ echo $PATH
/home/it-mskim/.local/bin:/home/it-mskim/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
Linux를 마스터하는 그날까지
화이팅!
'취약점 진단 > UNIX 취약점 진단' 카테고리의 다른 글
[UNIX] U-07 /etc/passwd 파일 소유자 및 권한 설정 (0) | 2024.10.05 |
---|---|
[UNIX] U-06 파일 및 디렉터리 소유자 설정 (0) | 2024.10.05 |
[UNIX] U-54 Session Timeout 설정 (0) | 2024.10.04 |
[UNIX] U-53 사용자 shell 점검 (0) | 2024.10.04 |
[UNIX] U-52 동일한 UID 금지 (0) | 2024.10.04 |