[AIX] setuid
Server@/etc> ls -al | grep passwd
-rw-r--r-- 1 root security 774 Jan 26 02:01 passwd
Server@/etc> cd /usr/bin
Server@/usr/bin> ls -al | grep passwd
-rwxr-xr-x 1 root system 284 Feb 24 2009 autopasswd
-r-x------ 1 root security 9968 Mar 15 2014 chpasswd
-r-sr-xr-x 1 root security 42980 Mar 15 2014 passwd
-rwxr-xr-x 1 root system 16584 Feb 24 2009 tkpasswd
-r-sr-xr-x 1 root security 16150 Mar 08 2014 yppasswd
s, 4000 : setuid 설정
s, 2000 : setgid 설정
t, 1000 : Sticky-bit 설정
참고로 Sticky-bit 설정은 대부분 /tmp 디렉터리에 설정되어 있는데, 가장 흔한 용도로 공용디렉터리로 사용하기 위한 것입니다. 즉, Sticky-bit로 설정된 디렉터리는 모든 사용자가 write가능하며 write된 파일은 그 사용자의 소유입니다.
Sticky-bit때문에 가능한 것이지요. 물론 삭제할 수 있는 권한 또한 root와 해당사용자만이 가능합니다.
chmod u+s filename
chmod g+s filename
chmod o+t filename
1 - 위에 passwd파일 보기
파일은 root만 rw권한이 있고, 644로 누구나 읽어볼 수는 있다. 하지만 passwd명령어는 계정을 가진 사용자라면 누구나 사용가능하다.
- 명령어를 실행시켰을 때 명령어를 찾아서 실행시키는 절차를 살펴보자.
1) 현재 작업디렉터리에서 찾음.
2) $PATH에서 찾음
3) 찾은 후에 실행권한 check
4) 권한이 있다면 실행시킨 사용자의 UID로 실행
5) 권한이 없다면 이 파일이 setuid bit가 있는가를 확인
6) setuid bit가 있다면 명령어 소유주의 UID(Effective UID)로 실행
2 - 일반적으로 시스템에서 setuid로 실행가능한 명령어는 몇 개로 제한이 되어 있습니다. 이미 설정되어 있는 명령어외에 새롭게 생성된 setuid파일(명령어)가 있는지를 정기적으로 check해야 합니다.
Server@/> find / -user root -perm -4000 -print -xdev
/sbin/helpers/jfs2/backbyinode
/sbin/helpers/jfs2/diskusg
/sbin/helpers/jfs2/restbyinode
Server@/> ls -al /sbin/helpers/jfs2/backbyinode
-r-sr-xr-x 1 root system 124160 Mar 15 2014 /sbin/helpers/jfs2/backbyinode
일반사용자가 자신의 passwd를 변경하기 위해 "passwd"라는 명령어를 사용했을 때는 s라는 permission(set UID)때문에 root권한으로 실행이 되는 것입니다. 따라서 /etc/passwd파일이 root소유임에도 불구하고 일반사용자가 변경이 가능하게 되는 것입니다.
해커들이 바로 이런 setUID permission이 설정되어 있으면서 root소유로 되어있는 명령어들을 해킹에 이용하게 되며 가장 대표적인 명령어가 passwd라는 명령어입니다.
즉, 다시 얘기하면 passwd라는 명령어가 실행이 될 때 root권한으로 /etc/passwd내용을 변경하게되는데 바로 이 시점에 즉 root권한으로 실행이 되고 있을 때 정규적인 작업만을 진행하는 것이 아니라 자기가 목적하는 악의적인 작업까지 하게 만드는 것입니다.
3 - SetUID 파일 설정하기
일반적으로 file permission은 "chmod 777 filename"등과 같이 숫자로 지정하는 것이 일반적이다. 하지만 setuid를 지정할 때에는 이 3자리숫자앞에 setuid permission을 하나 더 사용하면 된다.
chmod 4755 testfile
참고로 Sticky-bit설정은 대부분 /tmp 디렉터리에 설정되어 있는데, 가장 흔한 용도로 공용디렉터리로 사용하기 위한 것이다. 즉, Sticky-bit로 설정된 디렉터리는 모든 사용자가 write가능하며, write된 파일은 그 사용자의 소유가 됩니다.
sticky-bit 때문에 사용이 가능한 것이다. 물론 삭제할 수 있는 권한 또한 root와 해당 사용자만이 가능하다.
댓글
댓글 쓰기