사이트 내 전체검색
suid script나 프로그램으로부터 root로 이동할 수 있는가?
로빈아빠
https://cmd.kr/server/781 URL이 복사되었습니다.

본문

1. IFS를 변경하라.
프로그램이 system() 함수를 이용하여  다른 프로그램을 호출하면,프로그램을 속여서 IFS를 변경
할 수 있다.  IFS는 인자를 구분하기위해 사용된다. 프로그램이  다음과 같은 함수를 사용한다고
가정하자.

system("/bin/date")

IFS를 '/' 로 변경하면 shell은 '/'을 단지 bin 과 date을 구분하기 위하여 사용하므로(디렉토리
를 구분하기 위한 역할은 사라진다) /bin/date 을 'bin date'로 해석하게 된다.
누군가가 'bin'이라는 경로에 자신의 프로그램을  가지고 있다면, suid 프로그램은 /bin/date 대
신에 자신의 프로그램을 실행하게 된다.
IFS를 변경하기 위하여 다음의 명령어를 사용하라.

IFS='/';export IFS      # Bourne Shell
setenv IFS '/'          # C Shell
export IFS='/'          # Korn Shell

2. script 를 -i에 연결하라.
-i라는 이름을 가진 symbolic link를 프로그램에 만들어라. -i를 실행시키면 shell(bin/sh)을 대
화형 모드로 수행할 것이다. 이것은 suid shell scripts에서만 가능하다.

예:

% ln suid.sh -i
% -i
#

3. race condition을 이용하라.
커널이 /bin/sh를 수행하고 있는 동안 symbolic link를 다른 프로그램으로 바꿔라.

예:

nice -19 suidprog ; ln -s evilprog suidroot

4. 프로그램에서 bad input을 입력하라.
같은 명령어 줄에서 프로그램과 다른 명령어를 함께 수행하라.

예:

suidprog ; id

댓글목록

등록된 댓글이 없습니다.

1,139 (1/23P)

Search

Copyright © Cmd 명령어 3.145.15.1